客户端断开连接后 PHP 终止脚本

标签 php apache client lithium disconnect

目前我正在开发一个 PHP 系统(用于在 Web 服务之间同步数据)(使用 Lithium 框架),该系统通过curl 向不同的 Web 服务发出多个请求。

对于请求中的每个响应(可能会很多,比如说 100)。但是,当客户端断开连接时(例如在浏览器中按停止键),脚本在客户端断开连接“很长时间”后继续运行(日志行不断出现在日志文件中)。

据我所知,PHP 仅在尝试将输出发送到浏览器时检测客户端断开连接。所以现在我在每次请求(以及日志文件的每一行)到浏览器后刷新一些数据。但 PHP 脚本继续运行。

现在,我在每次日志调用后都有以下代码,但这似乎不起作用。

//Die on no connection
ignore_user_abort(false);
echo chr(0); flush(); ob_flush();
if(connection_aborted())
{
    die();
}

脚本一直在运行,我能做些什么来确保脚本在客户端(或至少很快)断开连接后停止吗?

编辑:为什么我总是在发布问题后找到解决方案。添加了“ob_flush”,这似乎有效。无论如何,感谢任何对此进行过研究的人。

最佳答案

尝试使用 ob_flush() 而不是 flush(),这将刷新输出缓冲区..

关于客户端断开连接后 PHP 终止脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112622/

相关文章:

php - 为 WordPress 插件存储文件

javascript - CodeIgniter - 如何将值从 View 传递到 Controller ?

ruby - 如何通过 VPN 在服务器上安装 Ruby?

java - 如何在 Java 中更改 Apache POI 中的 XWPFTableCell 边距?

c - 两个客户端之间异步传输消息

html - 关闭包含表单的应用程序脚本侧边栏

php - 更新多行记录

php - 如何在 OSX 上将 ODBC 添加到 MAMP

multithreading - mod_fcgid : multi‑threaded FastCGI now or in a planned future?

javascript - 执行 exe nodejs,完成时标记