Maison  >  Questions et réponses  >  le corps du texte

Continuer le traitement de php après avoir envoyé la réponse http

<p>Mon script est appelé par le serveur. Je recevrai le <code>ID_OF_MESSAGE</code> et le <code>TEXT_OF_MESSAGE</code> </p> <p>Dans mon script, je traiterai le texte entrant et générerai une réponse en utilisant les paramètres : <code>ANSWER_TO_ID</code> et <code>RESPONSE_MESSAGE</code>. </p> <p>Le problème est que j'envoie une réponse au <code>"ID_OF_MESSAGE"</code> entrant, mais le serveur qui m'envoie le message à traiter configure son message pour qu'il me soit livré (ce qui signifie Je peux donc envoyer sa réponse à cet identifiant) après avoir reçu la réponse http 200. </p> <p>Une solution consiste à enregistrer le message dans une base de données et à créer un cron qui s'exécute toutes les minutes, mais j'ai besoin que le message de réponse soit généré immédiatement. </p> <p>Existe-t-il une solution pour envoyer au serveur la réponse http 200 et continuer à exécuter le script php ? </p> <p>Merci beaucoup</p>
P粉029327711P粉029327711391 Il y a quelques jours553

répondre à tous(1)je répondrai

  • P粉351138462

    P粉3511384622023-08-28 17:34:11

    Oui. Vous pouvez faire ceci :

    ignore_user_abort(true);//not required
    set_time_limit(0);
    
    ob_start();
    // do 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)
    
    // now the request is sent to the browser, but the script is still running
    // so, you can continue...
    
    die(); //a must especially if set_time_limit=0 is used and the task ends
    

    répondre
    0
  • Annulerrépondre