在PHP中完成进程后执行操作
我一直在使用这个函数来检查进程是否正在运行。(我从以下网站获得): 我的理解是,只有当数组$ProcessState中有两行以上的行时,函数才会返回,如果进程处于活动状态,函数就会返回 因此,在流程按以下方式运行时(也可从上面的链接),编写代码以执行操作是很容易的: 但是,当流程完成时,执行操作的最佳方式是什么?我试过:在PHP中完成进程后执行操作,php,process,Php,Process,我一直在使用这个函数来检查进程是否正在运行。(我从以下网站获得): 我的理解是,只有当数组$ProcessState中有两行以上的行时,函数才会返回,如果进程处于活动状态,函数就会返回 因此,在流程按以下方式运行时(也可从上面的链接),编写代码以执行操作是很容易的: 但是,当流程完成时,执行操作的最佳方式是什么?我试过: while(! is_process_running($PID)) 但这不起作用,我想,因为它只经过一次循环。非常感谢您的帮助,谢谢 只需将要执行的代码放在循环之后: //
while(! is_process_running($PID))
但这不起作用,我想,因为它只经过一次循环。非常感谢您的帮助,谢谢 只需将要执行的代码放在循环之后:
// Process is still running
while (is_process_running($PID))
{
// wait
}
// Process is no longer running
do_stuff_afterwards();
如果您首先需要根据进程是否正在运行来进行分支,那么您可以将整个过程包装在一个
If(is\u process\u running($PID))
条件中。查看PCNTL函数(http://php.net/manual/en/ref.pcntl.php). 根据您的尝试,此库可能非常有用。在各个函数页上有一些代码示例。。。查看pcntl_wait() 天哪,我真的没想到会那么容易,谢谢!但我没有意识到,这会使php页面在等待while循环时暂停,这对我来说并不理想。必须考虑另一种解决方案,可能将PID提供给bash脚本或其他东西。干杯@Jingo:PHP是唯一的单线程。如果您需要等待一个事件,您可能需要研究一些基于事件的回调系统。我对PHP的任何方面都不太熟悉,但我绝不是一个专家,而且有可能存在这样的解决方案。您总是可以问一个关于“异步等待进程在PHP中终止”之类的单独问题。。。
while(! is_process_running($PID))
// Process is still running
while (is_process_running($PID))
{
// wait
}
// Process is no longer running
do_stuff_afterwards();