PHP可以调用一个函数,不要等待它返回?所以这样的东西:
function callback($pause,$arg) { sleep($pause); echo $arg,"\n"; } header('Content-Type: text/plain'); fast_call_user_func_array('callback',array(3,'three')); fast_call_user_func_array('callback',array(2,'two')); fast_call_user_func_array('callback',array(1,'one'));
将输出
one (after 1 second) two (after 2 seconds) three (after 3 seconds)
而不是
three (after 3 seconds) two (after 3 + 2 = 5 seconds) one (after 3 + 2 + 1 = 6 seconds)
主脚本旨在作为一个永久的进程(TCP服务器)运行. callback()函数将从客户端接收数据,执行外部PHP脚本,然后根据传递给callback()的其他参数执行某些操作.问题是主脚本不能等待外部PHP脚本完成.外部脚本的结果很重要,所以exec(‘PHP -f file.PHP&’)不是一个选项.
编辑:
很多人都建议看一下PCNTL,所以似乎可以实现这样的功能. PCNTL在Windows中不可用,现在我没有访问Linux机器,所以我无法测试它,但是如果有很多人建议,那么它应该是诀窍:)
感谢大家!
在Unix平台上,您可以启用PCNTL功能,并使用
原文链接:https://www.f2er.com/php/131058.htmlpcntl_fork
分支进程并在子进程中运行作业.
就像是:
function fast_call_user_func_array($func,$args) { if (pcntl_fork() == 0) { call_user_func_array($func,$args); } }
一旦你打电话给pcntl_fork,两个进程将从同一个位置执行你的代码.父进程将获得从pcntl_fork返回的PID,而子进程将获得0.(如果有一个错误,父进程将返回-1,这在生产代码中值得检查).