2012-10-22 79 views
1

这真的很重要,因为我在Google找不到任何东西。如何知道命令行中的任务何时完成?

我怎么知道命令行执行的应用程序是什么时候(或者更适合称它为一个任务?)?如何在PHP知道如果复制多个文件的任务,如果我不喜欢这样完成:

exec("cp -R /test/ /var/test/test"); 

是否PHP脚本继续转到下一个代码即使在命令仍运行在后台进行复印?或者PHP脚本是否等待复制完成?命令行应用程序在完成时如何通知脚本(如果有)?必须进行某种交互。

回答

1

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 
} 
?> 
0

它会一直等到exec调用返回时,不管它返回。

但是,它可能是退出调用返回,虽然它已启动的命令尚未完成。如果您从控件中分离,可能会出现这种情况,例如在命令末尾明确指定“&”。

相关问题