给定以下php代码。。。
<?php
exec('myscript.php');
exec('finish.php');
?>
有没有办法知道myscript.php何时停止运行?
我想在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()的情况下,只有在第一个终止后才会调用第二个。