php'守护进程'如何工作?

时间:2011-04-25 19:46:36

标签: php curl

我正在学习php,我想写一个简单的论坛监视器,但我遇到了一个问题。如何编写定期下载文件的脚本?加载页面时,php只执行一次,如果我将它放入循环中,则必须在页面加载完成之前运行它。但是,我想每分钟下载一个文件,并在文件发生变化时在页面上发出通知。我该怎么做?

3 个答案:

答案 0 :(得分:1)

通常,您将分两步采取行动:

  • 首先,您将拥有一个每分钟运行一次的PHP脚本 - 使用crontab
    • 此脚本将执行繁重的工作:下载和解析页面
    • 将一些信息存储在共享位置 - 数据库,通常是
  • 然后,如果信息存在,您的网页只需要检查共享位置(数据库)


这样,您的网页将始终有效:

  • 即使有很多用户,只有cronjob会下载页面
  • 即使cronjob暂时不起作用,网页也能正常工作;可能最糟糕的是一些信息已经过时。

答案 1 :(得分:1)

其他人已经建议使用定期的cron脚本,我认为这可能是更好的选择,但保罗提到,这取决于你的用例。

但是,我只是想直接解决你的问题,也就是说,PHP中的守护进程如何工作?答案是它的工作方式与任何其他语言的守护进程相同 - 您启动一个不会立即结束的进程,并将其放入后台。然后,该进程轮询文件或接受套接字连接或其他一些,并且这样做,接受一些工作要做。

(这显然是一个有点简化的概述,当然,您通常需要有适当的机制来进行流程管理,发信号通知服务正常关闭,并且可能集成到操作系统的守护程序管理等等但是基础知识几乎相同。)

答案 2 :(得分:0)

  

如何编写下载的脚本   定期的文件?

有这样做的人,比如linux(或unix)上的'cron'

  

加载页面时,php是   只执行一次,

只需一次,就像您网站的index.php一样......

如果您想要更新在浏览器中显示的页面,而不是使用某种形式的AJAX, 如果你想要别的东西而不是你的问题不清楚/我......