这真的很重要,因为我在Google找不到任何东西。如何知道命令行中的任务何时完成?
我怎么知道命令行执行的应用程序是什么时候(或者更适合称它为一个任务?)?如何在PHP知道如果复制多个文件的任务,如果我不喜欢这样完成:
exec("cp -R /test/ /var/test/test");
是否PHP脚本继续转到下一个代码即使在命令仍运行在后台进行复印?或者PHP脚本是否等待复制完成?命令行应用程序在完成时如何通知脚本(如果有)?必须进行某种交互。
这真的很重要,因为我在Google找不到任何东西。如何知道命令行中的任务何时完成?
我怎么知道命令行执行的应用程序是什么时候(或者更适合称它为一个任务?)?如何在PHP知道如果复制多个文件的任务,如果我不喜欢这样完成:
exec("cp -R /test/ /var/test/test");
是否PHP脚本继续转到下一个代码即使在命令仍运行在后台进行复印?或者PHP脚本是否等待复制完成?命令行应用程序在完成时如何通知脚本(如果有)?必须进行某种交互。
php的exec会返回一个字符串,所以是的。您的网页将冻结,直到命令完成。 比如这个简单的代码
<?PHP
echo exec("sleep 5; echo HI;");
?>
当在页面加载5秒钟执行它会出现,那么它会显示:
HI;
如何在PHP知道如果复制几个任务如果我这样做,文件就完成了吗?
Php不知道,它只是运行命令,并不在乎它是否工作,但返回从该命令产生的字符串。这就是为什么它更好地使用PHP的复制命令,因为它统计时返回TRUE/FALSE。或者创建一个bash/sh脚本,它将返回0/FALSE或1/TRUE,以确定命令是否成功。那么你可以这样PHP:
<?PHP
$answer = exec("yourScript folder folder2");
if ($answer=="1") {
//Plan A Worked
} else {
//Plan A FAILED try PlanB
}
?>
它会一直等到exec调用返回时,不管它返回。
但是,它可能是退出调用返回,虽然它已启动的命令尚未完成。如果您从控件中分离,可能会出现这种情况,例如在命令末尾明确指定“&”。