我使用以下脚本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脚本。
如何避免这种阻塞?
答案 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的问题。