搜索

首页  >  问答  >  正文

发送http响应后继续处理php

<p>我的脚本被服务器调用。我将从服务器接收 <code>ID_OF_MESSAGE</code> 和 <code>TEXT_OF_MESSAGE</code>。 </p> <p>在我的脚本中,我将处理传入的文本并使用参数生成响应:<code>ANSWER_TO_ID</code> 和 <code>RESPONSE_MESSAGE</code>。</p> <p>问题是我正在向传入的<code>“ID_OF_MESSAGE”</code>发送响应,但是向我发送消息以进行处理的服务器会将其消息设置为已传递给我(这意味着我可以将他的响应发送到该 ID),收到 http 响应 200 后。</p> <p>解决方案之一是将消息保存到数据库并创建一些每分钟运行一次的 cron,但我需要立即生成响应消息。 </p> <p>是否有一些解决方案如何发送到服务器http响应200并继续执行php脚本?</p> <p>非常感谢</p>
P粉029327711P粉029327711453 天前623

全部回复(1)我来回复

  • P粉351138462

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

    是的。你可以这样做:

    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
    

    回复
    0
  • 取消回复