Exécution de PHP après l'envoi de la réponse
Un script PHP rencontre souvent la nécessité de traiter davantage les données après avoir répondu à une requête du serveur. Un de ces scénarios implique la gestion des paramètres des messages entrants ("ID_OF_MESSAGE" et "TEXT_OF_MESSAGE") et la génération d'une réponse avec les paramètres "ANSWER_TO_ID" et "RESPONSE_MESSAGE".
Cependant, l'envoi d'une réponse HTTP 200 au serveur marquera immédiatement le message tel que délivré côté serveur. Cela présente un dilemme car la génération de réponses immédiates est essentielle.
Pour surmonter ce problème, vous pouvez :
ignore_user_abort(true); //optional set_time_limit(0); ob_start(); // Handle initial processing 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 processing after request dispatch die(); // Ensure script termination
En définissant ignore_user_abort() et set_time_limit(0), le script peut continuer à s'exécuter indéfiniment. . Les fonctions ob_* envoient immédiatement les en-têtes et le corps de la réponse. L'instruction die() termine le script, ce qui est nécessaire pour empêcher une exécution infinie lorsque set_time_limit(0) est utilisé.
Cette technique vous permet de gérer les requêtes entrantes, d'envoyer des réponses et de continuer à traiter votre script PHP sans attendre. pour que le navigateur reçoive la réponse complète.
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!