【发布时间】:2017-01-10 06:10:43
【问题描述】:
我正在使用 php 的 shell_exec 来调用 bash 文件、系统程序和 Ksh 文件。
shell_exec 的一个问题是,如果您需要输出,您的 Web 服务器将锁定(即不会提供新请求),直到该过程完成。一个常见的技巧是将进程设置为在后台运行 (> /dev/null 2> /dev/null &),但这当然会丢弃任何输出。
我尝试从 apache 切换到 nginx,认为这可以解决我的问题,但根本问题似乎是 php 的 shell_exec 如何阻止 i/o。即使使用 nginx,shell_exec 也会完全阻止任何新的 http 请求完成。
有谁知道如何在不锁定服务器的情况下使用 php 进行系统调用,同时还捕获输出?
我正在考虑创建一个管理异步系统调用的库,以便以后可以使用 Ajax 检索输出。
但我不想走那条路。有什么建议吗?
【问题讨论】:
标签: php linux apache bash nginx