PHP shell_exec - 如果连接关闭如何终止进程?

2024-02-13

我有一个可用的 php 脚本,使用 shell_exec 来执行一个外部程序,大约需要 30 秒才能完成。 问题是,如果用户关闭浏览器或由于某种原因关闭连接,则使用 shell_exec 执行的程序将继续运行,因为它的输出无法再发送给用户。

有没有办法在连接关闭后立即终止该进程?

感谢您的帮助。


终于我解决了!

我用过PHP函数connection_aborted()检查客户端是否断开连接。https://www.php.net/manual/en/function.connection-aborted.php https://www.php.net/manual/en/function.connection-aborted.php

算法如下(伪代码)

shell_exec("script");//script is a shell script that launch the program in another thread thus this return immediately
$task_completed=false;
while(!$task_completed){
    if(connection_aborted()==1){
        kill_the_process();//this will kill the running process launched by script
        die();
    }
    $task_completed=...;//true if the task completed
    sleep(1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP shell_exec - 如果连接关闭如何终止进程? 的相关文章

随机推荐

  • 类型错误:float() 参数必须是字符串或数字,而不是“函数” – Python/Sklearn

    我有一个名为 Flights py 的程序的以下代码片段 Load the Dataset df dataset df isnull any df df fillna lambda x x median Define X and Y X d
  • MySql查询时间间隔数据的直方图

    我有一个这种类型的事件输入 event user event start event end event type 插入到 MySql 表中 每个表都在自己的行中 以 user start 作为主键 我需要按时间间隔 例如分钟 查询类型的直
  • 如何调试Android的NFC实现?

    这个问题可以分解成多个更小的问题 最终结果是能够使用 gdb 等调试器在 Galaxy Nexus Android 4 1 设备的 C C NFC 实现中设置断点 以检查其内部状态 是否可以将 Galaxy Nexus 设备上的库替换为包含
  • Jenkins Windows Slave 忽略本地 Git 设置

    我已经将 Windows Jenkins 从机设置为 Unix Jenkins 主机 我正在运行 Windows 8 1 msysgit 1 9 5 和 Jenkins 1 616 当检查路径 文件名超过 255 个字符的存储库时 我收到
  • 如何使用 C# 将浏览文件按钮添加到 Windows 窗体

    我想在单击 浏览 按钮时选择本地硬盘上的文件 我不知道如何使用OpenFileDialog控制 谁能帮我 这些链接通过示例进行了解释 http dotnetperls com openfiledialog http dotnetperls
  • 无法加载资源:net::ERR_CERT_AUTHORITY_INVALID

    我正在通过 https 实现 Node js 脚本 Node js const options key fs readFileSync private key cert fs readFileSync cert crt This is ne
  • 使用 CSS/HTML 更改悬停时的图像

    我遇到这个问题 我已设置一个图像以在鼠标悬停时显示另一个图像 但是第一个图像仍然出现 并且新图像不会更改高度和宽度并与另一个图像重叠 我对 HTML CSS 还很陌生 所以我可能错过了一些简单的东西 这是代码 img src Library
  • VB.Net 将值传递给另一种形式

    我想知道如何将值从 form1 传递到另一个表单的公共子 问题是它说 在这种情况下无法访问 因为它是 私人 我尝试将 Form 1 Private Sub 更改为 Public Sub 但仍然存在相同的错误 我应该如何让它发挥作用 Publ
  • 如何使用 angular-cli (6.x) 创建 mono-repo 项目结构

    我想使用 angular cli 生成一个新的工作区 目前执行此操作的唯一方法是运行 ng new asdf cd asdf ng g application whatever 但随后所有的src 文件仍然存在 以及现在存储不一致的项目的原
  • JPA @Entity继承

    我一直在研究 JPA Hibernate Entity继承有一段时间了 似乎找不到任何可以解决我想要实现的目标的东西 基本上我希望能够定义一个 Entity根据需要包含所有列和表映射 然后我希望能够延长 Entity在许多不同的地点 有不同
  • 通过 WinAPI 确定 Intel HD 显卡版本

    因此 我尝试通过 WinAPI 函数获取有关显卡的信息 但有一个关于如何获取确切的卡信息的问题 我已经编写了调用 EnumDisplayDevices 的代码 并通过我的调用收到了 DeviceString Intel R HD Graph
  • C 宏,求两个数中的最小值

    我想用 define 创建一个简单的宏来返回两个数字中较小的一个 我怎样才能在 C 中做到这一点 提出一些想法 看看是否可以让它变得更加混乱 通常 define min a b a lt b a b 请注意 这会评估最小值两次 这是灾难的原
  • Python 或 C/C++ 中的 RTSP 库?

    我正在尝试寻找任何适用于 Python 或 C C 的 RTSP 流媒体库 如果没有 还有其他实时流解决方案吗 在 Python 或 C C 中实现 RTSP 有多容易或困难以及从哪里开始 try live555 http www live
  • 具有多重索引的 Pandas 划分 (.div)

    我有类似的东西 df pd DataFrame np random randint 2 10 size 5 2 df index pd MultiIndex from tuples 1 A 2 A 4 B 5 B 8 B df index
  • TransformerFactory - 避免网络查找来验证 DTD

    我需要为 XML 文档的离线转换进行编程 当使用以下命令加载原始 XML 文件时 我已经能够停止 DTD 网络查找 DocumentBuilderFactory factory factory DocumentBuilderFactory
  • 使用 libcurl 而不使用 dll

    我正在使用 Microsoft Visual C 2010 我需要制作一个不需要 libcurl dll 的应用程序 我在预处理器指令中定义 CURL STATICLIB 并链接到 libcurl lib libcurl static li
  • Nivo 滑块 + php

    我为网站创建了一个自定义 cms 并尝试使 nivo 滑块与我的数据库配合使用 但我的 while 循环出现问题 我只将图像的名称存储在数据库中 而图像本身存储在文件夹中 图像可以正常工作 但它们显示在实际幻灯片的上方 而实际的幻灯片已损坏
  • 如何使用 php 覆盖 Apache keep-alive 标头?

    在我的 httpd conf 中有 KeepAliveTimeout 1 我正在尝试覆盖 Apache KeepAliveTimeout 设置singlephp 脚本 不在整个服务器中 所以我有一个 php 脚本 header Keep A
  • 为什么使用“youtube.com/v”的 YouTube 视频无法加载

    请查阅这一页 http www islandcricket lk videos sri lanka cricket it feels great mathews talks about test series victory against
  • PHP shell_exec - 如果连接关闭如何终止进程?

    我有一个可用的 php 脚本 使用 shell exec 来执行一个外部程序 大约需要 30 秒才能完成 问题是 如果用户关闭浏览器或由于某种原因关闭连接 则使用 shell exec 执行的程序将继续运行 因为它的输出无法再发送给用户 有