Poursuite de l'exécution de PHP après l'envoi de la réponse
Dans un scénario où un script PHP reçoit un message entrant, le traite et envoie une réponse à le serveur demandeur, il est nécessaire de poursuivre l'exécution du script PHP après l'envoi de la réponse initiale. Cela devient difficile car le serveur marque généralement le message comme livré lors de la réception d'une réponse HTTP 200.
Éviter le stockage de base de données et les tâches Cron
Au lieu de recourir au stockage des messages dans une base de données et en s'appuyant sur une tâche cron, il existe une solution plus immédiate. Cela implique l'envoi de la réponse HTTP 200, puis la poursuite de l'exécution du script PHP.
Implémentation du script PHP
Pour implémenter cette solution, suivez ces étapes dans votre script PHP :
ignore_user_abort(true); // Not required but can prevent premature termination set_time_limit(0); ob_start(); // Perform initial processing here echo $response; // Send the response header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); @ob_flush(); flush(); fastcgi_finish_request(); // Required for PHP-FPM (PHP > 5.3.3) // Continue script execution // ... die(); // End the script especially when set_time_limit=0 is used and the task is complete
Cette séquence de code permet au script d'envoyer la réponse, mais le processus PHP continue de s'exécuter. Vous pouvez effectuer des traitements ou des tâches supplémentaires ou envoyer une autre réponse si nécessaire. Il est important d'appeler die() à la fin pour terminer le script et libérer des ressources.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!