2011-09-03 118 views
3

是否有可能在js的web服务器的后台启动php脚本,并让它运行,即使您更改页面或根本不访问该站点,然后获得当前状态,如果您在第二时间调用php脚本?有没有办法启动一个PHP脚本并获取状态?

这个PHP脚本将处理数据数小时,并为每个循环的X秒/分钟睡眠。如果我之前问的是可能的话,如果php只在脚本结束时才会产生输出,我甚至可以从中获得“回声”?

也许这不是PHP的工作?

谢谢

编辑:在Windows机器上使用Apache

回答

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命令末尾的“&”)。这很重要,因为否则当Web页面的PHP脚本终止时,您的进程将被终止(子进程在父进程死后死!)。另外,请记住“php”可执行文件(cli)必须位于您的路径中(因此您可以从命令行执行“php”)。

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

+1

作品!谢谢! –

3

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

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

+0

谢谢。我忘了说这是一个带有Apache的Windows服务器! 无论如何,这似乎是好的,我可以在数据库中记录或写入当前状态并检索它。问题在于那篇文章和其他人谈论使用UNIX系统来运行它们。我需要使用浏览器从网页启动。 –

+0

这听起来像你试图做的是定期启动一个PHP脚本来处理一些数据。我不是100% - 但我不认为在Windows中编写批处理作业以使用php解释器启动脚本并将其加载到Windows任务计划程序中以便间隔运行它并不困难。允许网页在您的机器上运行作业通常不是一个好主意。 – tdk2fe

相关问题