Garder actif un script php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Garder actif un script php

par fab » 04 mars 2006, 02:15

euh sinon tu peux lancer directement ton début depuis un terminal :
http://fr.php.net/manual/fr/features.commandline.php

par delcedo galaxialord » 04 mars 2006, 01:03

Re salut !

C'est exactement ce que je cherchais :), sauf que la fonction ignore_user_abort() ne marchait pas totalement (elle était reconnue mais elle ne modifiait pas l'état d'"arrêt" de la page.

J'ai donc du modifier le php.ini dans lequel j'ai trouvé ce magnifique paragraphe :
; If enabled, the request will be allowed to complete even if the user aborts
; the request. Consider enabling it if executing long request, which may end up
; being interrupted by the user or a browser timing out.
ignore_user_abort = On
Dans lequel j'ai tout de suite décommenté la ligne "ignore_user_abort = On" !

Après redémarrage du serveur j'ai pu remarqué que la fonction ignore_user_abort() me renvoyait bien 1 (au lieu de 0 dans le cas précédent même avec un paramètre de 1).

Mon script ne plante désormais plus dès que je coupe mon navigateur, merci beaucoup à tous !

Pour ceux qui voudrait plus d'infos sur ce sujet, j'ai trouvé ce lien :
http://fr.php.net/manual/fr/features.co ... ndling.php

par delcedo galaxialord » 03 mars 2006, 13:41

merci ! je sens que c'est ce que je cherchais. Je vous dirais ca ce soir :)

C'est fou tout ce qu'il y a comme fonctions dans PHP :D (c'est d'ailleurs pour ca que j'adore PHP :))

par titerm » 03 mars 2006, 13:00

Tu devrais voir du coté de la fonction ignore_user_abort()

par delcedo galaxialord » 03 mars 2006, 12:03

J'ai bien mis un set_time_limit(0), donc normalement pas de bug à ce niveau là.

Je fais un moteur de recherche d'images en php et j'ai besoin d'un robot qui parcours les pages et indexe les images / mot-clés etc...

Ce robot doit s'exécuter tout seul :)

J'ai déjà pu le tester en laissant mon navigateur ouvert, il n'y a pas d'erreur généré (et de toute manière s'il y en a, le script principal appelé relance l'indexation automatiquement). Le script principal s'appelle relance.php et il s'occupe de tout.

Je ne vois pas l'intérêt d'un cron ? De toute manière le script attendra quand même les acquittements de l'utilisateur (qui est le cron ou mon navigateur) ?

J'ai remarqué que sur OVH ou à mon IUT (pas testé sur d'autres), les scripts continuaient de s'exécuter même si l'utilisateur avait fermé son navigateur. Donc ils n'ont pas utilisé de cron/webcron. Je pense que c'est plutot au niveau configuration. Non ? (dsl si je me trompe ! :oops: )

par Cyrano » 03 mars 2006, 11:55

Un script PHP est déclenché par l'appel depuis une page web... ou un gestionnaire de tâches CRON ; Si tu fais un appel depuis une page internet et que tu fermes ton navigateur, un signal est envoyé indiquant que le résultat attendu n'est plus requis, donc l'application s'arrête. Il faut donc faire en sorte que l'appelant attende le résultat sans que tu sois prisonnier du délai d'exécution. C'est donc plus approprié de passer par une tâche CRON ou WebCron.

Il faudrait que tu précises ce que tu veux faire en fin de compte. D'autant que le timeout configuré dans ton php.ini a une certaine importance : par défaut, c'est trente secondes.

Garder actif un script php

par delcedo galaxialord » 03 mars 2006, 11:51

Salut !

J'ai un script PHP que j'aimerai garder actif (qui continue de s'exécuter quand mon navigateur est fermé).

Le problème est, que quand je lance mon navigateur et que j'accède à la page, le script s'exécute sans problème, mais dès que je ferme la page... pouf ! Le script s'arrête quelques secondes après...

J'ai remarqué que sur la pluspart des serveurs il continue de s'exécuter, pourquoi pas chez moi ?!!!

J'ai Apache2 d'installer sur une Debian. Que dois-je modifier ? J'ai essayé de fouiner dans apache2.conf et j'ai trouvé KeepALive, mais en bidouillant les valeurs j'ai planté le serveur...

Quelqu'un peut-il m'aider :) Merci !!

Olivier.