Я использую следующий скрипт 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.
Как избежать этой блокировки?
Попробуй с этим
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 &");
}
}
Существует способ заставить оболочку немедленно вернуться, добавив амперсанд в командную строку с помощью popen
:
# ⇓
popen("$archive_command 2>&1 &", "r");
Если с тобой все в порядке, хорошо. Если нет, дайте мне знать. Существует еще один более сложный способ решения проблемы с запуском оболочки в другом потоке.