10
votes

Un script PHP peut-il s'orporter ou détecter l'avortement?

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?

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 ?


0 commentaires

5 Réponses :


7
votes

Quitter () / Die () arrêtera un script PHP.

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.

Vous pouvez également consulter le Manipulation de la connexion Information. Où nous avons des choses comme Connection_Aborted () et Connection_Status ()

Mais quel est le problème que vous essayez de résoudre?


0 commentaires

1
votes

Eh bien, vous pouvez démarrer un $ start = microtime (true) qui retournera un horodatage. Ensuite, vous pouvez simplement continuer à vérifier microtime (true) et soustrayez-le à partir de votre heure de début pour obtenir le nombre de secondes depuis l'exécution.

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.

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.


0 commentaires

2
votes

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.


0 commentaires