一尘不染

发送HTTP响应后继续执行PHP

php

如何使PHP 5.2(以apache mod_php运行)向客户端发送完整的HTTP响应,然后再继续执行操作一分钟?

长话说:

我有一个PHP脚本,该脚本必须执行一些较长的数据库请求并发送电子邮件,这需要45到60秒才能运行。这个脚本由我无法控制的应用程序调用。我需要该应用程序报告从PHP脚本收到的任何错误消息(主要是无效的参数错误)。

该应用程序的超时延迟小于45秒(我不知道确切的值),因此将PHP脚本的每次执行都注册为错误。因此,我需要PHP尽快将完整的HTTP响应发送到客户端(最好是在验证输入参数后立即发送到客户端),然后运行数据库和电子邮件处理。

我正在运行mod_php,所以pcntl_fork不可用。我可以通过将要处理的数据保存到数据库并从中运行实际过程来解决此问题cron,但是我正在寻找一个更短的解决方案。


阅读 364

收藏
2020-05-26

共1个答案

一尘不染

让处理初始请求的脚本在处理队列中创建一个条目,然后立即返回。然后,创建一个单独的进程(也许通过cron),该进程定期运行队列中待处理的任何作业。

2020-05-26