'exec'命令在执行SchTasks时阻止运行php脚本

时间:2015-01-20 14:03:35

标签: php schtasks

我使用以下脚本php来安排存档任务:

$archive_command = 'SchTasks /Create /SC monthly /MO lastday /TN archive'.date('Y_m').' /TR PHP_BINARY." ".$SCRIPT_DIR.archive.php /M * /ST 23:30';
exec("$archive_command 2>&1");

但是当执行SchTasks重新创建相同的任务时,它会阻止执行php脚本。 如何避免这种阻塞?

2 个答案:

答案 0 :(得分:1)

试试这个

pclose(popen("$archive_command 2>&1 &", "r"));

<强>更新 我从另一个网站上选择了这个功能:

function bgExec($cmd) {
    if(substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start /B ". $cmd, "r")); 
    } else {
        exec($cmd . " > /dev/null &"); 
 }
}

答案 1 :(得分:0)

有一种方法可以通过在&popen的命令行中添加&符号来强制shell立即返回:

#                            ⇓
popen("$archive_command 2>&1 &", "r");

如果你没问题,那很好。如果没有,请告诉我。还有另一种更复杂的方法来解决在另一个线程中启动shell的问题。