发送响应后处理 PHP
当从服务器接收带有消息 ID 和文本的请求时,脚本通常需要处理信息并生成响应。但是,立即发送响应可能会将服务器消息标记为已发送,从而阻止进一步处理。对于需要立即生成响应但正在进行后端操作的应用程序来说,这可能是一个问题。
解决方案:使用输出缓冲进行延迟处理
为了解决此问题,有一种已知的技术因为可以使用输出缓冲。此方法涉及以下步骤:
-
启用延迟执行:
- 调用ignore_user_abort(true)以防止用户操作中断script.
- 设置set_time_limit(0)以删除任何时间
-
缓冲响应输出:
-
发送部分响应:
- 处理必要的数据并生成初始响应,然后使用回声$response.
-
刷新输出标头:
-
发送以下标头:
- Connection: close 表示响应结束后连接将关闭已发送。
- Content-Length: .ob_get_length()` 指定缓冲输出的长度。
-
完整响应传输:
- 致电ob_end_flush() 和 @ob_flush() 刷新缓冲的输出。
- 调用flush()将剩余的输出发送到浏览器。
- 对于 PHP-FPM (PHP > 5.3.3 ),调用fastcgi_finish_request()来完成请求。
-
继续处理:
其他注意事项:
- 为了确保执行完成,请使用 die() 显式终止脚本,特别是当使用 set_time_limit=0 时。
- 这种技术使脚本在后台运行,这可能会消耗服务器资源。
以上是发送即时响应后如何进行后台 PHP 处理?的详细内容。更多信息请关注PHP中文网其他相关文章!