如何刷新php中的数据并断开用户连接,但保持脚本存活

Rod*_*igo 5 php ajax multithreading

这是一个技巧问题,在开发一个php + ajax应用程序时,我感觉到一些长时间的查询,它们没有任何问题,但它们可以在后台完成.

我知道有一种方法可以通过exec()将实际处理发送到另一个进程来向用户发送回复,但它对我来说感觉不对,这可能会产生漏洞并且使它与虚拟兼容并不实际服务器和跨平台.

PHP提供了ob_*函数,尽管它们有助于刷新缓存,但用户将保持连接直到脚本运行.

我想知道在向用户发送数据并使用apache关闭连接/线程之后是否有一个替代exec来保持脚本运行,或者将处理数据发送到另一个脚本的"脏"方式.

Rod*_*igo 1

经过一些研究,我找到了这个问题的 3 个答案:

  1. 执行一个低超时值的ajax请求,一旦达到超时,JS将继续下一步,而php在后台启用ignore_user_abort,将继续处理。

  2. 将慢速进程与直接回答用户的脚本分开,执行立即回复或部分回复(如果可能,视情况而定),将慢速进程变量存储到 _SESSION 或数据库中,通过 cURL 以低超时将其发送给工作人员值或有一个 cron 任务来调用工作人员。

  3. 使用吉尔曼。