У меня есть PHP-код, который должен работать в фоновом режиме (без cronjobs или аналогичных опций), который завершен, но я просто не могу вызвать его в фоновом режиме. Я пытаюсь следующее:
$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"));
Но это никогда не работает. Если я пойду и побегу import.php вручную работает без сбоев.
PS: я не могу изменить import.php.
Помогите?
Я получил решение:
Что я делаю, так это вызываю PHP внутри пакета и запускаю его с помощью 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"));
И внутри progress_import.php
я использую:
$id = $argv[1];
$numberFiles = $argv[2];
Чтобы поймать параметры.
Надеюсь, что это помогает кому-то.
Других решений пока нет …