Ich verwende das folgende Skript PHP, um die Archivierungsaufgabe zu planen:
$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");
aber wenn ausführen SchTasks
Um dieselbe Aufgabe erneut zu erstellen, blockiert sie die Ausführung des PHP-Skripts. Wie kann diese Blockierung vermieden werden?
Antworten:
1 für die Antwort № 1Versuche es damit
pclose(popen("$archive_command 2>&1 &", "r"));
AKTUALISIEREN: Ich habe diese Funktion von einer anderen Seite ausgewählt:
function bgExec($cmd) {
if(substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
} else {
exec($cmd . " > /dev/null &");
}
}
0 für die Antwort № 2
Es gibt eine Möglichkeit, die Shell zur sofortigen Rückkehr zu zwingen, indem Sie ein kaufmännisches Und an die Befehlszeile mit anhängen popen
:
# ⇓
popen("$archive_command 2>&1 &", "r");
Wenn dies für Sie in Ordnung ist, in Ordnung. Wenn nicht, lass es mich wissen. Es gibt eine andere, kompliziertere Möglichkeit, ein Problem beim Starten der Shell in einem anderen Thread zu beheben.