我正在使用 Ratchet 来构建一个 telnet/php 程序。
我需要能够检查服务器循环是否正在运行,如果没有通过 php exec 命令启动它,然后将循环启动的信息发送到客户端。
我有以下几行:
$file = "php " . ABS_PATH . "inc/lib/telnet/telnet_server.php > /dev/null &";
exec($file);
print "done";
不幸的是,脚本似乎卡在 exec 部分,所以我无法将信息发送给客户端。
我在 EasyPHP 环境中本地工作,所以我需要能够首先在 Windows 下测试结果,然后在 Linux 网络服务器上。
任何帮助表示赞赏...
提前谢谢!
最佳答案
exec是一个阻塞命令,因为它等待输出。
如果你想启动一个进程/守护进程,你应该查看 popen或 proc_open .
由于您可能希望向进程发送数据,因此您需要后者。
您可以使用 proc_get_status检索并存储 PID(进程 ID),以便您稍后检查该进程是否已在运行。
关于PHP 执行函数 : redirect to dev/null to exit script ( Ratchet loop ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076874/