[RESOLU][PHP][WHILE] Boucle infini = 400 mails par minute !

Faire ce genre d’horreur c’est se creer des problemes.

Donc selon vous, ce n’est pas une solution ?
Alors comment je peux faire dans le cas ou je ne peux pas accèder aux crons du serveur… autres pistes que le php peut-être, javascript ? asp ? …

Utiliser une technologie adaptee au probleme que tu cherches a resoudre, i.e. pas un serveur de page web.

je vais peut être faire mon lourd mais le problème c’est que je connais pas la technologie adaptée à mon problème :slight_smile:

Ben si tu veux ton serveur web va te servir d’interface pour que les utilisateurs s’inscrivent a ton service et entrent leur donnés en DB.
Par contre faut que sur ton serveur t’ai un autre prog qui tourne pour faire le reste (envoie des mails a intervalles, rappels…), tout ce qui ne peut pas être fait via un serveur Web.

Après ton prog tu le fais avec le langage de ton choix.

Avec une base de données c’est possible de stocker les événements et d’envoyer un email quand l’événement a débuté. Si tu as peu de visiteurs, tu peux utiliser WebCron une fois par heure pour envoyer les emails. Et c’est pas trop sale. Chez OVH avec un simple hébergement 60GP tu peux programmer des tâches avec cron; utiliser Free pour un projet universitaire, c’est prendre le risque que Free coupe le service le jour où tu en auras besoin.

Merci pour ton orientation, mais webcron est utilsable au maximum une fois par heure ? on ne peut pas lui demandé d’envoyé un mail à un moment passé en paramètre par exemple ?
Et pour ta remarque par rapport a utiliser free en fait, c’est parce que free est gratuit mais si vous connaissez un hebergeur gratuit qui permet l’execution de cron je suis preneur :slight_smile:

[quote=“rom1, post:27, topic: 46939”]Merci pour ton orientation, mais webcron est utilsable au maximum une fois par heure ? on ne peut pas lui demandé d’envoyé un mail à un moment passé en paramètre par exemple ?
Et pour ta remarque par rapport a utiliser free en fait, c’est parce que free est gratuit mais si vous connaissez un hebergeur gratuit qui permet l’execution de cron je suis preneur :)[/quote]

Mais euh, même si j’ai pas une haute opinion de l’université francaise, tu es sur que tu passe pas à côté de quelque chose là ? Je doute quand même fortement qu’on te demande de faire un truc stupide. Est-ce que ce n’est pas toi qui a trouvé une solution inadapté ou choisi une technologie qui ne correspond pas à ce qui est nécessaire ?

[quote=“rom1, post:27, topic: 46939”]Merci pour ton orientation, mais webcron est utilsable au maximum une fois par heure ? on ne peut pas lui demandé d’envoyé un mail à un moment passé en paramètre par exemple ?[/quote]Je ne sais pas si WebCron a une limitation mais c’est pas la question. Les hébergeurs peuvent voir ça d’un mauvais oeil, alors vaut mieux rester prudent.

[quote=“rom1, post:27, topic: 46939”]si vous connaissez un hebergeur gratuit qui permet l’execution de cron je suis preneur :)[/quote]Les hébergeurs gratuits c’est le mal, généralement ils ferment au bout de 3 mois ou deviennent payants, Free est une exception car ils fournissent un service de bonne qualité mais ils ont une infrastructure pour. Tu n’as pas quelques euros à placer dans un hébergement ?

Tu peux nous en dire plus sur ce qu’on te demande, sur ton niveau et sur les langages que tu connais ?

[quote]Je ne sais pas si WebCron a une limitation mais c’est pas la question. Les hébergeurs peuvent voir ça d’un mauvais oeil, alors vaut mieux rester prudent.
Les hébergeurs gratuits c’est le mal, généralement ils ferment au bout de 3 mois ou deviennent payants, Free est une exception car ils fournissent un service de bonne qualité mais ils ont une infrastructure pour. Tu n’as pas quelques euros à placer dans un hébergement ?[/quote]

Si c’est la seule solution je debourserais quelques euros même si ca me servira qu’a ce projet actuel.

Le projet que je dois réaliser n’est pas spécialement une demande de mon professeur, mais je lui ai suggerer ce genre de site. Et il m’a dit qu’il était d’accord donc j’ai en convenu que cela était réalisable. De plus la matière dont il est responsable est php, donc le domaine de mon projet est php. Mais pas seulement car il faudra bien utiliser du xhtlm, du css et aussi du javascript pour rendre le site utilisable ainsi qu’une base de donnée MySql.
En ce qui concerne mon niveau je suis pas une bête mais je me débrouille enfin je connais les démarches à suivre pour analyser du code que je ne connais pas.

Mais… mais… vous avez pas pleins de serveurs avec des gentils root qui pourraient t’aider à héberger ton projet ? Ou même un espace perso ?

On a des espaces perso à la fac, mais je ne pense qu’on puisse avoir accès au paramètrage serveur…

Bonjour,

J’ai donc pris la décision de m’acheter un nom de domaine cependant je pense prendre une offre ovh, il y a des produits spéciales pages perso mais je n’ai pas vu si on pouvait lancer une tache cron sur le serveur.
Est ce que quelqu’un sait si cela est possible, à savoir que ma tache doit tourné en continue?

Merci pour vos réponse que m’avez déja donné, et comme quoi y a que les … qui ne changent jamais d’avis :slight_smile:

[quote=“rom1, post:33, topic: 46939”]Est ce que quelqu’un sait si cela est possible, à savoir que ma tache doit tourné en continue?[/quote]Voici le guide. Attention, cron != service qui tourne en continu. Comme quelqu’un l’a déjà dit, une page PHP ne peut pas tourner en continu, c’est pas fait pour. À mon avis, c’est pas très compliqué de faire ça avec PHP et MySQL : tu stockes les événements dans une table MySQL, toutes les heures (grâce à cron) le script regarde si il y a un événement à venir dans les 24 heures, il envoie un email à l’adresse associée à l’événement, on peut faire ça à 7 jours, 24 heures, 12 heures, etc. Par contre OVH risque de couiner si tu envoies 30000 emails (chiffre au hasard) par jour, ils ont des dispositifs anti-spam donc il faut rester raisonnable dans l’envoi des emails. C’est destiné à être utilisé quotidiennement par des personnes ou c’est pour montrer de quoi tu es capable ?

Sinon j’ai pas compris si c’était un travail demandé par tes profs ou non. Si c’est non tu peux utiliser Google Agenda.

Edit : dans les offres OVH c’est pas écrit si les tâches automatisées sont disponibles partout. Je sais juste que c’est dispo sur 60GP car je l’ai. OVH va sûrement sortir des offres d’hébergement illimité avant la fin du mois, ça vaut peut-être le coup (coût ?) d’attendre …

Ca m’intéresserait de comprendre comment : il y a une fonctionnalité de rechargement périodique d’une page web ?

Mais bon, c’est pas pour ça que je déterre ce topic : je vais passer pour un fada mais moi je l’ai faite la boucle infinie :

<?php while (1){ backup ($monSite) sleep ($unJour) } ?>

Je confirme 2 points :

  1. ça marche très bien et mon site est sauvegardé tout les jours sans avoir accès à un cron.
  2. ça pose problème majeur : comment défaire ce qui est fait ?

En effet, même en ayant un accès ssh (ce qui n’est pas garanti), le processus qui s’exécute est compris dans apache (ou php ?) et je me demande comment l’arrêter autrement qu’en rebootant le serveur.

J’ai bien une piste, mais je peine à la suivre jusqu’au bout : http://www.php.net/manual/fr/ref.exec.php

avec notamment proc_open et proc_terminate : si PHP est capable de lancer une appli externe et de la fermer, il doit aussi être capable de lancer un script PHP en boucle et de le stopper sur demande, non ?

Ca m’intéresserait de comprendre comment : il y a une fonctionnalité de rechargement périodique d’une page web ?

Mais bon, c’est pas pour ça que je déterre ce topic : je vais passer pour un fada mais moi je l’ai faite la boucle infinie :

<?php while (1){ backup ($monSite) sleep ($unJour) } ?>

Je confirme 2 points :

  1. ça marche très bien et mon site est sauvegardé tout les jours sans avoir accès à un cron.
  2. ça pose problème majeur : comment défaire ce qui est fait ?

En effet, même en ayant un accès ssh (ce qui n’est pas garanti), le processus qui s’exécute est compris dans apache (ou php ?) et je me demande comment l’arrêter autrement qu’en rebootant le serveur.

J’ai bien une piste, mais je peine à la suivre jusqu’au bout : http://www.php.net/manual/fr/ref.exec.php

avec notamment proc_open et proc_terminate : si PHP est capable de lancer une appli externe et de la fermer, il doit aussi être capable de lancer un script PHP en boucle et de le stopper sur demande, non ?

EDIT : ou alors, tout bêtement, http://forum.hardware.fr/hfr/Programmation…ujet_2377_1.htm :

Quel torture de lire des atrocités pareilles. En effet, fallait être solide pour lire ce topic.

newmorning > seul moyen d’arrêter ce que tu as fait : rebooter le serveur ou redémarrer apache. Pas le choix.

Et inutile de chercher à arrêter ton script avec un autre script php. C’est pas pour rien que php est un langage web.

EDIT : wo p’tain ! 666ème message.

C’est pourtant possible dans l’absolu : http://www.php.net/manual/en/function.shell-exec.php#57215

Le seul ennui, si j’ai bien compris, c’est que ça stoppe TOUS les processus…

Il y a 90% de chance que tu ais un problème de droits. Si le serveur est bien paramétré, php n’aura pas accès à certains processus vitaux. Et heureusement, je te raconte pas le bordel sinon.

il y a des tas de solutions.

déjà, repars à la base de ton truc et dis-toi une chose: est-ce que c’est une boucle infinie que tu veux faire?
non, c’est une boucle qui s’arrête quand tu as décidé de l’arrêter.

Par conséquent, il faut que tu remplace ta condition (1) par une condition qui va vérifier si tu lui as donné l’ordre de s’arrêter.

exemple:

<?php $continue=true; while ($continue){ backup ($monSite); sleep ($unJour); if (is_file('./stop')){ $continue=false; } } ?>

là je vérifie l’existence d’un fichier, mais tu peux aussi bien aller voir une valeur en base de données ou autre chose.

tu peux même, au lieu d’arreter la boucle quand il trouve la condition, mettre un if() autour de ton backup: comme ça il continue quand même de vérifier tous les jours que ta condition est vraie, et reprend les backup des que tu veux.

Merci Rabban :slight_smile: c’est exactement ce que je vais faire dans ma prochaine version. Par contre, pour la mettre en œuvre sur le serveur web, il faut que j’attende le redémarrage du serveur… Ou que je trouve une solution pour stopper ce processus sans faire de dégat, et ça c’est pas gagné :crying: