Cron qui s'arrête tout seul au bout de deux heures précise - PHP - Programmation
Marsh Posté le 14-05-2010 à 16:19:18
au lieu de faire des sleep, fais des crons, c'est à ça qu'ils servent.
Marsh Posté le 15-05-2010 à 10:11:55
pvpmage a écrit : Bonjour, |
Ya une limite de temps d'execution des script.
Faut pas mettre des sleep à gogo. Comme dit GPT2, les crons c'est fait pour ça
Marsh Posté le 15-05-2010 à 11:21:10
si je mets des sleeps, c'est parce que je ne suis capable de lancer un cron que toutes les heures, et j'ai besoin de lancer mon script plusieurs fois par minutes ...
Marsh Posté le 15-05-2010 à 11:50:42
pourquoi tu ne peux lancer des crons que toutes les heures ? pourtant un cron ça peut se configurer facilement.
tu n'as pas la main là dessus ?
Marsh Posté le 15-05-2010 à 11:51:47
pvpmage a écrit : si je mets des sleeps, c'est parce que je ne suis capable de lancer un cron que toutes les heures, et j'ai besoin de lancer mon script plusieurs fois par minutes ... |
hé ben tu utilises des sleeps pendant une heure, et tu relances le script toutes les heures avec cron. Un peu d'imagination que diable (puisque apparemment tu n'as pas la main mise sur les crons)
Marsh Posté le 15-05-2010 à 15:13:47
@gatsu -> parce que je suis chez ovh et que je n'ai accès qu'au "crontab" qui ne permet qu'un lancement tous les heures
@ GPT2 -> j'y ai pensé ^^ mais par contre le problème c'est que quand je dis à un cron de partir à 18h, il peut partir à 18h10 ou à 18h40 ... j'ai vraiment pas la main mise la dessus
J'ai signalé le problème à OVH et je n'ai pour le moment pas de réponse si ce n'est "on va faire d'autres vérifications"
Marsh Posté le 15-05-2010 à 15:43:13
tu te payes un serveur dédié
Marsh Posté le 15-05-2010 à 20:00:48
@ gatsu -> oui, mais bon à part ça un serveur dédié ne me servirait à rien.
@ oxman -> je n'utilises pas webcron, pas envi de payer pour un service si je peux le réaliser correctement tout seul.
et @ luc@s -> pour scanner l'armurerie de world of warcraft de manière "respectueuse", c'est à dire sans surcharge pour mon serveur, et sans appeler 100 page/seconde sur le site de l'armurerie qui répondrait alors probablement par un ban définitif par l'ip de mon serveur mutualisé
Marsh Posté le 15-05-2010 à 21:36:33
t'as qu'à faire un cron qui s'appelle tout seul
au lieu d'appeler le script, tu appelles la page du script depuis l'extérieur (http://...) ainsi t'auras pas la limite des 2h
Marsh Posté le 15-05-2010 à 22:48:53
voila, j'avais pensé à cela.
Donc au lieu de faire un cron, je pensais faire la chose suivante : en gros j'ai un javascript qui appelle mon script toutes les x secondes quand une page de mon site est ouverte.
Ceci est formidable à la seule exception que le temps entre les lancements du script est adapté à la charge du serveur de l'armurerie (que l'on peut deviner en fonction de la durée de ban que l'on recoit si l'on scan trop fort, et selon la fréquence de scan que l'on effectue alors). Aussi, par exemple dans le cas où je ne recois aucun ban, je peux aller à 1scan / seconde. Dès que je suis banni 1 minute, hop je remonte la limite, puis je la rabaisse une heure plus tard pour voir si la charge du serveur a baissé ou non etc etc...
Tout ça pour dire que j'ai du mal à voir comment synchroniser les moments où les scripts se lancent si j'utilise un javascript sur chacune de mes pages pour appeler le script. (ou inclure le script en fin de page)
Y a-t-il un moyen gratuit (autre que webcron donc) pour faire ceci ?
Marsh Posté le 15-05-2010 à 23:52:05
pvpmage a écrit :
|
beh si, comme je t'ai dit dans mon dernier post, fais le toi-même, tu inclus dans ton script PHP un appel vers lui-même depuis l'extérieur.
Code :
|
à partir de là tout est possible.
Marsh Posté le 16-05-2010 à 10:09:03
en fait je veux bien que mon cron s'autorappelle, mais je ne vois pas l'interêt de faire en sorte que l'appelle soit "depuis l'extérieur", et je ne vois pas pourquoi cela supprimerait le blocage au bout de 2 heures.
Marsh Posté le 16-05-2010 à 10:44:59
pvpmage a écrit : en fait je veux bien que mon cron s'autorappelle, mais je ne vois pas l'interêt de faire en sorte que l'appelle soit "depuis l'extérieur", et je ne vois pas pourquoi cela supprimerait le blocage au bout de 2 heures. |
l'intérêt que ce soit depuis l'extérieur est de lever le blocage des deux heures.
la raison pourquoi ça supprime cette limite est simple: Les 2 heures ce sont le temps maximal d'exécution d'un script. Si tu arrêtes un script et le relance, les 2h sont réinitialisées. Le seul moyen de réinitialiser les deux heures est donc d'arrêter le script et de le relancer, suis-je clair ? Or il n'y a pas d'autre moyen d'arrêter un script que... de l'arrêter, et donc le seul moyen de le relancer serait de l'extérieur, sinon ça serait sa simple continuation...
capito?
Marsh Posté le 16-05-2010 à 11:55:22
parfait, merci bcp
Maintenant faut juste que je vérifie mes scripts pour vérifier qu'il n'y a aucune manière de rentrer en boucle infinie, d'autant qu'avec les sleep il me semble que c'est méga galère à tuer si on rentre dedans
Marsh Posté le 13-05-2010 à 22:29:09
Bonjour,
via le crontab de ovh je lance un script qui s'exécute tranquillement (il y a des sleep dedans ce qui fait qu'il met un certain temps à s'exécuter) et ce script s'arrête au bout de deux heures précisement (dans le log, je recois par ex pour le dernier : Heure de début : 2010-05-13 18:50:07 ; Heure de fin : 2010-05-13 20:50:15), alors que rien dans mon script ne lui dit de s'arrêter. D'ailleurs ce n'est même pas une sortie "normale" du programme car les echo de fin de script ne sont pas rapportés dans le log. De plus, j'ai mis set_time_limit(0); et ini_set('max_execution_time', 0); au début du script
Auriez vous une idée de pourquoi mon script s'arrête ??
Merci d'avance
(mon script est en fait :
set_time_limit(0);
ini_set('max_execution_time', 0);
while(condition){
fait_qqch_chose
sleep
}
)