在php中获取脚本退出状态代码

在php中获取脚本退出状态代码,php,exit-code,Php,Exit Code,是否仍然可以通过exec($cmd,$output,$exitCode)获取后台运行的php脚本的退出状态代码 例如: exec('php script.php &', $output, $exitCode); $cmd = 'php asynchronous_script.php -p 1'; exec("php script_executor.php -c'$cmd' &"); 如果不包括尾随的“&”,则$exitCode按预期工作,否则始终为0。我发现一些可能与Pra

是否仍然可以通过exec($cmd,$output,$exitCode)获取后台运行的php脚本的退出状态代码

例如:

exec('php script.php &', $output, $exitCode); 
$cmd = 'php asynchronous_script.php -p 1';
exec("php script_executor.php -c'$cmd' &");

如果不包括尾随的“&”,则$exitCode按预期工作,否则始终为0。

我发现一些可能与Pradeep的解决方案相当的东西。有人在函数的文档页面上发布了这方面的信息。
对于在这里找到自己的任何人,我的解决方案是制作一个以脚本作为参数的php脚本。新脚本被调用到后台并适当地处理退出状态

例如:

exec('php script.php &', $output, $exitCode); 
$cmd = 'php asynchronous_script.php -p 1';
exec("php script_executor.php -c'$cmd' &");
第二个脚本看起来像

$opts = getOpt('c:');
$cmd = rtrim($opts['c'], '&');
$exitCode = 0;
$output = '';

exec($cmd, $output, $exitCode);

if ($exitCode > 0) {
 ...
}

请参考此链接,该链接不是肯定的,但我认为如果它在后台运行,那么您的代码将在被调用的脚本完成执行之前继续运行,因此无法获取返回的状态代码。您获得的“0”可能意味着进程已成功发送到后台。您是否正在删除第二个脚本中的
&
?这意味着您在这两种情况下都没有运行后台进程?您可能打算在后台运行第一个脚本。。。可能是。@Khez我发布这篇文章已经有一段时间了,但我想你是对的,最初的解决方案在第一个exec()调用中有一个硬编码,并从第二个exec()调用中删除了它,以便它可以处理退出代码。不用担心,我正在搜索类似的东西(与后台进程无关),阅读被接受的答案,并觉得有必要指出可能存在的问题。。。