PHP 运行非阻塞系统调用

Att*_*cus 6 php parallel-processing nonblocking

如何在 PHP 中运行非阻塞系统调用?

该系统调用将调用由第二个 PHP 脚本运行的流服务。因此我的页面会等待此调用。

我对解决方案的两个想法:

1:存在一个本地方法/参数以非阻塞方式执行系统调用

2:在一个新的 C++ 程序上运行 system(),然后该程序将自行分叉并运行实际的 php 脚本。线

是否有一种以非阻塞方式执行系统调用的本机方法,或者我是否需要解决这个问题......

我目前有 shell_exec('nohup php /path/to/file.php &') 但它仍然有效

etu*_*rdu 4

来自PHP 手册

如果使用此函数启动程序,为了使其继续在后台运行,必须将程序的输出重定向到文件或另一个输出流。如果不这样做将导致 PHP 挂起,直到程序执行结束。

同一页面的评论中提供了一个示例(基于 Linux):

如果您想启动一个继续独立于 apache(具有不同的父 pid)运行的 php 进程,请使用 nohub。例子:

exec('nohup php process.php > process.out 2> process.err < /dev/null &');