php中的exec函数是否可以超时?
我希望php中的exec在给定时间后停止执行。 例如: 20秒后停止处决。 有可能吗php中的exec函数是否可以超时?,php,Php,我希望php中的exec在给定时间后停止执行。 例如: 20秒后停止处决。 有可能吗 <?php exec("/usr/local/bin/wrun 'uptime;ps -elf|grep httpd|wc -l;free -m;mpstat'",$admin_uptime); ?> 在unix中,每个进程都绑定父进程。如果父进程死亡,子进程也会死亡。因此,如果您使用以下命令:set_time_limit20;脚本和执行的子进程被终止。exec函数处理执行程序的输出,因此我建议您
<?php
exec("/usr/local/bin/wrun 'uptime;ps -elf|grep httpd|wc -l;free -m;mpstat'",$admin_uptime);
?>
在unix中,每个进程都绑定父进程。如果父进程死亡,子进程也会死亡。因此,如果您使用以下命令:set_time_limit20;脚本和执行的子进程被终止。exec函数处理执行程序的输出,因此我建议您将输出重定向到/dev/null虚拟可写文件,该文件会自动释放您写入的所有数据 尝试运行:
exec("/usr/local/bin/php -q /home/gooffers/somefile.php > /dev/null 2>&1 &");
注意:2>&1将错误输出重定向到标准输出,而>/dev/null将标准输出重定向到该虚拟文件
如果仍然有困难,可以创建一个只执行其他脚本的脚本。exec在执行任务时遵循流程,但在任务完成时释放。如果执行的脚本只是执行另一个脚本,那么任务会非常快,exec也会以同样的方式释放
让我们看一个实现。创建一个exec.php,其中包含:
<?php
if (count($argv) == 1)
{
die('You must give a script to exec...');
}
array_shift($argv);
$cmd = '/usr/local/bin/php -q';
foreach ($argv as $arg)
{
$cmd .= " " . escapeshellarg($arg);
}
exec("{$cmd} > /dev/null 2>&1 &");
?>
如果您有论点,也可以给出:
exec("/usr/local/bin/php -q exec.php /home/gooffers/somefile.php x y z > /dev/null
检查这个,我的脚本有不止一个exec函数。我不会在20秒后杀死所有exec。我想给每个执行者20秒来完成它的执行。20秒后,一个执行官停止,第二个执行官开始执行,这可能吗?分而治之:这是我从你的帐户中注意到的第二项未分配的工作。这个答案没有归属。抄袭另一篇文章是可以的,但将其归因于原作者是一种良好的做法和礼貌。阅读更多。
exec("/usr/local/bin/php -q exec.php /home/gooffers/somefile.php > /dev/null 2>&1 &");
exec("/usr/local/bin/php -q exec.php /home/gooffers/somefile.php x y z > /dev/null