我想从另一个php页面启动一个php页面作为后台进程。
答案 0 :(得分:3)
答案 1 :(得分:2)
这是我用来绕过我的webhost限制的技术(将cronjobs限制为15分钟的执行时间,因此我的备份脚本总是超时)。
exec( 'php somefile.php | /dev/null &' );
这一行的细分是:
exec()
- PHP reference运行指定的命令,就像从Linux命令行运行一样。php somefile.php
:调用PHP打开并运行 somefile.php 。这与通过Web浏览器访问该文件时会发生的行为相同。|
(“pipe”) - 将前进命令的输出发送到指定目标。在这种情况下,它将“管道”通常由访问该文件的Web浏览器读取的内容。/dev/null
- 一个黑洞。不,不是在开玩笑。如果您只想让它消失,那么这是您发送输出的地方。&
- 将此字符附加到Linux命令的末尾意味着“不要等待 - 将其发送到后台并继续。”因此,总而言之,提供的代码将执行PHP脚本,不返回任何输出,并且在继续下一行之前不等待它完成。
(而且,和往常一样,如果我这些假设中的任何一个都是错误的,我很乐意被更多知识渊博的社区成员纠正。)
答案 2 :(得分:0)
您必须确保在完成页面处理时不终止后台进程。如果您使用的是Linux系统,则可以尝试使用nohup命令:
$command = 'nohup php somefile.php';
pclose(popen($command,'r'));
如果它仍然被终止,你可以尝试“守护进程”命令。