有没有办法启动PHP脚本并获得状态?

时间:2011-09-03 15:36:04

标签: php javascript background

是否可以使用js在web服务器的后台启动php脚本并让它运行即使你改变页面或者根本不访问该站点然后如果你在第二时刻调用php脚本则获取当前状态?

这个php脚本将处理数小时数并为每个循环休眠X秒/分钟。如果我之前提出的问题是可能的话,如果php只在脚本结束时才生成输出,我怎么能从中得到“回声”?

也许这不是PHP的工作?

谢谢

编辑:在带有apache的Windows机器上

2 个答案:

答案 0 :(得分:3)

当然有可能 - 我有几个用PHP编写的全天候运行的脚本。查看Creating Daemons in PHP。它有关于如何'守护'一个PHP脚本以便它像服务一样运行的良好信息,它还包括信号处理。

要获得调试输出,您将重定向到日志文件。搜索“unix重定向输出”,因为有很多可用的信息。

答案 1 :(得分:1)

在Windows中,它与UNIX没什么不同。

首先,您需要创建一个带有运行循环的PHP脚本。例如,请看一下:http://code.google.com/p/php-apns/。这是一个PHP“守护进程”:主要脚本PushMonitor.php永远运行,因为它有一个无限循环。它定期轮询队列,然后执行操作然后等待。实际上真的很简单!

在您的情况下,问题是您要从PHP脚本启动“守护程序”。 您可能需要查看此内容:http://robert.accettura.com/blog/2006/09/14/asynchronous-processing-with-php/(第一个示例代码)。您将执行launchBackgroundProcess('php myscript.php')

之类的操作

请注意,在代码中有“start / b”命令(以及UNIX命令末尾的“&”)。这很重要,因为否则当网页的PHP脚本终止时,您的进程将被终止(子进程在父进程死亡后死亡!)。 另外,请记住“php”可执行文件(cli)必须在您的路径中(因此您可以从命令行执行“php”)。

由于启动后台进程的页面的PHP脚本将终止,因此无法以简单的方式直接捕获“回声”。我的建议是将所有输出写入文件(或数据库等),然后在必要时从该源读取内容。 因此,您将使用file_put_contents()等

而不是“echo”