PHP+Apache-关闭连接并处理数据


PHP+Apache - Close connection and process data

我有一个PHP应用程序,它从用户那里接收数据。我希望脚本发送快速响应,关闭与浏览器的连接,然后处理数据。我主要担心的是,由于数据处理需要相当长的时间,而且网站上有很多并发用户,我很快就会遇到开放连接太多的问题。我怎么能做到这一点有什么想法吗?

将用户的数据提交到数据库。让一个cronjob负责处理。如果用户之后需要查看结果,请使用Ajax进行轮询,等待数据得到处理。cronjob是在服务器上每隔一段时间执行一次的命令。你可以让它执行一个PHP脚本,每分钟或任何你需要的处理。

我认为gearman将是一个很好的解决方案。

正如你所说,由于运行多个进程,资源耗尽是一个大问题,这是像gearman这样的排队系统所处理的事情之一。所以,无论你做什么,你都需要排队工作。

我想我已经找到了我需要的解决方案。下面是我正在使用的PHP代码。在这个代码之后,我可以根据需要继续处理:

// http://www.php.net/manual/en/features.connection-handling.php#71172
ob_end_clean();
header("Connection: close");
ignore_user_abort();    // optional
ob_start();
echo $user_message;
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();         // Strange behaviour, will not work
flush();