Face à des opérations chronophages qui dépassent les délais d'attente des applications Web, les développeurs recherchent souvent des solutions pour poursuivre l'exécution de PHP au-delà du protocole HTTP. livraison de la réponse. Dans ce cas particulier, le défi est de permettre à PHP de transmettre rapidement une réponse HTTP complète tout en lançant et en complétant simultanément le traitement de la base de données et du courrier électronique dans un délai prescrit d'une minute.
La méthode la plus simple consiste à utiliser ob_end_flush( ) et flush() fonctionne de manière stratégique. En mettant fin au processus de mise en mémoire tampon de sortie et en libérant les en-têtes HTTP à côté du texte visible par l'utilisateur, le script signale efficacement l'achèvement de la réponse au client.
Voici un exemple d'extrait de code qui illustre cette approche :
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // Disable abort ob_start(); echo ('Success message for the user'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Flush the initial content flush(); // Ensure proper flushing session_write_close(); // Delegate time-consuming tasks here sleep(30); echo('Tasks completed after 30 seconds');
Avec cette approche, le script informe le client d'une opération réussie et lance des tâches fastidieuses ultérieures sans provoquer l'expiration du délai d'attente de l'application.
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!