【问题标题】:is there a way to launch a php script and get the status?有没有办法启动一个 php 脚本并获取状态?
【发布时间】:2011-09-03 15:36:04
【问题描述】:

是否可以在后台使用 js 在网络服务器上启动一个 php 脚本,即使您更改页面或根本不访问该站点也让它运行,然后如果您在第二个时刻调用 php 脚本,则可以获取当前状态?

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

也许这不是 PHP 的工作?

谢谢

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

【问题讨论】:

    标签: php javascript background


    【解决方案1】:

    这当然是可能的 - 我有几个用 PHP 编写的 24/7 运行的脚本。查看Creating Daemons in PHP。它有关于如何“守护”一个 php 脚本以便它像服务一样运行的很好的信息,它还涵盖了信号处理。

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

    【讨论】:

    • 谢谢。我忘了说这是一个带有 apache 的 Windows 服务器!无论如何,这看起来不错,我可以在数据库中记录或写入当前状态并检索它。问题是那篇文章和其他人谈论在 UNIX 系统上运行它们。我需要使用浏览器从网页启动。
    • 听起来你想要做的是定期启动一个 PHP 脚本来处理一些数据。我不是 100% - 但我认为在 windows 中编写批处理作业以使用 php 解释器启动脚本并将其加载到 windows 任务计划程序中以间隔运行它并不困难。允许网页在您的计算机上运行作业通常不是一个好主意。
    【解决方案2】:

    在 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”。

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 2012-01-01
      • 2016-03-18
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      相关资源
      最近更新 更多