/ Der Befehl 'exec' blockiert die Ausführung von PHP-Skripten, wenn SchTasks ausgeführt werden - PHP, Aufgaben

'exec' Befehl blockiert das Ausführen von PHP Skript, wenn SchTasks - php, schtasks ausgeführt wird

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 № 1

Versuche 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.