我有一个使用Curl在PHP中编写的脚本,逐个访问长列表中的URL并将响应写入文件。我希望从浏览器上传列表,并在后台完成其余处理(无需等待响应)。我已经尝试了以下解决方案 -
$command = "C:\wamp\bin\php\php5.5.12\php.exe ../background_process/subscribe_bg.php ".$file_temp_path;
shell_exec(sprintf('%s > /dev/null 2>/dev/null &', $command));
这将成功运行脚本,但会让浏览器等待。(在Linux机器上可能会在后台运行。)
$command = "C:\wamp\bin\php\php5.5.12\php.exe ../background_process/subscribe_bg.php ".$file_temp_path;
execInBackground($command);
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
}
else {
exec($cmd . " > /dev/null &");
}
}
我发现了一个适用于Windows机器的解决方案,但对我不起作用。脚本根本没有执行。
请建议在Windows机器上使用PHP在后台运行长时间进程(不是非常长,大约30-40分钟)的最佳实践。