用exec命令触发php文件:如何查看进程何时停止


Trigger a php file with an exec command: how to see when process has stopped

给定以下php代码。。。

 <?php   
     exec('myscript.php');
     exec('finish.php'); 
?>

有没有办法知道myscript.php何时停止运行?

我想在myscript.php完成之前阻止finish.php运行。

exec()调用将阻塞,直到外部作业完成。除非您强制在后台运行一个myscript调用,否则当myscript.php为. 时,您永远不会运行finish.php
$output = shell_exec("myscript.php"); 

这只是一个猜测,但我敢打赌你会看到执行错误。这可能是因为myscript.php没有运行所需的bang行(#!/usr/bin.php)和+x标志。

*更新*

或者,看起来你可以只是

include("myscript.php");
include("finish.php");

这会得到你想要的结果。如果您真的想在运行过程之外执行这些,请参阅我上面关于bangline和使脚本可执行的评论。

有没有办法知道myscript.php何时停止运行?

如果它运行finish.php,则myscript.php的执行结束。如果这是一个后台过程,你可以做一些"黑客"的事情,比如在myscript.php完成后创建一个文件,并检查它。

来自文档:

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

我建议您使用proc_open,因为它提供了更多的灵活性。您还应该注意,在exec()的情况下,只有在第一个终止后才会调用第二个。