/ / Não é possível executar um script PHP em segundo plano com Popen - php, background-process, popen, pclose

Não é possível executar um script PHP em segundo plano com Popen - php, background-process, popen, pclose

Eu tenho um código PHP que precisa ser executado em segundo plano (sem cronjobs ou opções semelhantes) que está completo, mas eu simplesmente não posso chamá-lo em segundo plano. Eu estou tentando o seguinte:

$files = $_GET["files"];
$id = $_GET["id"];

pclose(popen("start /B D:\server\php\php.exe D:\server\www\whatever\importat\import.php?files=".$files."&id=".$id." 2>nul >nul", "r"));

Mas "nunca corre. Se eu for correr import.php manualmente, funciona sem falhas.

PS: Eu não posso alterar o import.php.

Socorro?

Respostas:

0 para resposta № 1

Eu tenho a solução:

O que estou fazendo é chamar o PHP dentro de um lote e lançá-lo usando o popen:

$phpBatch = "progress_import_".$idImport.".bat";
$myPhp = fopen($phpBatch, "w") or die("Error opening file!");
$batchContent .= "@echo OFF n";
$batchContent .= ""D:\path\to\php.exe" D:\path\to\progress_import.php ".$idImport." ".$_SESSION["numberFiles"]." ";
pclose(popen("start /B D:\path\to\".$phpBatch."", "r"));

E dentro do progress_import.php estou a usar:

$id = $argv[1];
$numberFiles = $argv[2];

Para pegar os parâmetros.

Espero que ajude alguém.