Eu uso o seguinte script php para agendar tarefa de arquivo:
$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");
mas quando executar SchTasks
para recriar a mesma tarefa, bloqueia a execução do script php. Como evitar esse bloqueio?
Respostas:
1 para resposta № 1Tente com isso
pclose(popen("$archive_command 2>&1 &", "r"));
ATUALIZAR: Eu escolhi esta função de outro site:
function bgExec($cmd) {
if(substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
} else {
exec($cmd . " > /dev/null &");
}
}
0 para resposta № 2
Há uma maneira de forçar o shell a retornar imediatamente anexando o E comercial à linha de comando com popen
:
# ⇓
popen("$archive_command 2>&1 &", "r");
Se estiver tudo bem com você, tudo bem. Se não, me avise. Há outra maneira mais complicada de resolver um problema com o início do shell em outro thread.