私は次のスクリプト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スクリプトの実行がブロックされます。 このブロックを回避する方法
回答:
回答№1は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 &");
}
}
回答№2の場合は0
次のようにコマンドラインにアンパサンドを追加することによって、シェルにすぐに戻るように強制する方法があります。 popen
:
# ⇓
popen("$archive_command 2>&1 &", "r");
これでよければ、結構です。そうでなければ、私に知らせてください。別のスレッドでシェルを起動することに関する問題を解決するもう1つのより複雑な方法があります。