不能运行后台PHP脚本与Popen


Can't Run a background PHP Script With Popen

我有一个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];

捕捉参数

希望对大家有所帮助。