Les scripts php peuvent Continuez à exécuter après le Demande de page HTTP , alors comment puis-je enfin l'arrêter d'exécuter quand j'en ai fini avec elle? P>
Aussi, y a-t-il un événement à détecter lorsque le système d'exploitation abandonne-t-il de force le script? Ou comment puis-je conserver une minuterie interne pour prédire max_execution_time code>? p>
5 Réponses :
Quitter () / Die () arrêtera un script PHP. p>
Pour savoir quand arrêter le script, vous devez simplement utiliser Microtime < / a> en tant que minuterie et sauvegardez comme une constante (ou une récupération du fichier php.ini) l'heure d'exécution maximale. P>
Vous pouvez également consulter le Manipulation de la connexion Information. Où nous avons des choses comme Connection_Aborted () et Connection_Status () P>
Mais quel est le problème que vous essayez de résoudre? p>
Eh bien, vous pouvez démarrer un Mais non, vous ne pouvez pas "attraper" le script comme sa terminaison pour la raison de la demande étant trop longue. Vous pouvez essayer de faire des trucs de dernière minute dans le gestionnaire d'arrêt, mais je ne suis pas sûr si PHP l'honorera. P>
On dirait qu'il y avait une fonction qui fait exactement ce que vous voulez, Connecte_Timeout () , mais il a été obsolète et supprimé. Je ne sais pas s'il y a un type de remplacement pour cela, cependant. P> $ start = microtime (true) code> qui retournera un horodatage. Ensuite, vous pouvez simplement continuer à vérifier
microtime (true) code> et soustrayez-le à partir de votre heure de début pour obtenir le nombre de secondes depuis l'exécution. P>
Vous voudrez peut-être jeter un coup d'oeil à PCNTL-Alarm qui permet à un script d'envoyer un signal à lui-même. Contient également un exemple d'échantillon sur la manière d'attraper les signaux de tuerie qui peuvent être envoyés par le système d'exploitation. Et mourir () en effet. P>
N'oubliez pas que le rappel d'arrêt ne sera appelé que si l'exécution du script se termine. Si l'utilisateur abandonne la connexion, cela ne s'appelle pas.
Pour avoir un rappel au moment où votre demande est une fermeture, utilisez beaucoup comme la plupart des environnements POSIX, PHP prend également en charge manutentionnaires de signal . Vous pouvez enregistrer votre propre gestionnaire pour l'événement register_shutdown_function (myfunction) code>.
sigterm code>. P>