如何在服务器中连续运行php程序?

时间:2010-11-25 05:24:58

标签: php cron daemon

我想在服务器中不断运行一个php程序,它会下载一些东西并存储它们。

我正在考虑创建一个脚本并在cron中运行它。

但是我想知道是否有其他简单的方法或轻量级组件在连续运行时占用较少的服务器内存?

我想到了另一个简单的事情,

创建一个具有无限max_execution时间的php脚本,并在一段时间内运行代码(true)循环(无限循环),然后使用php启动程序..

这可能是更好的方法吗?

6 个答案:

答案 0 :(得分:2)

我创建了一个名为LooPHP的库,它有助于抽象出所有while(1)疯狂,并提供添加事件源的能力(或多或少它是你在GLib中运行的基本runloop, Cocoa,node.js)。有一些examples可以让你知道你是否喜欢写作风格(基于事件和循环驱动)。

我建议用PHP and daemon tags阅读其他一些问题。这是一个few of my个答案。

但老实说CRON是相当轻量级的,除非它需要是实时的(或者对你来说意味着什么)将PHP编写成一个守护进程比工作更多的工作。

答案 1 :(得分:1)

运行一个cron - 这就是他们的目的。

您对循环while(TRUE)sleep()的想法是不稳定的,并且对于运行cron作业的任何其他开发人员来说可能都不那么明确。

答案 2 :(得分:0)

使用cron作业非常好......如果你使用脚本,你不是必须使用浏览器调用它,或者每次都在shell中调用它吗?如果要下载东西,可以将其设置为每小时运行一次或类似的东西。如果您将它用作Web服务器上的脚本,则您可能已经运行它,然后再次调用它,因此有两个实例同时运行。

答案 3 :(得分:0)

  1. 为什么不通过SSH进入机器并在控制台中运行php?
  2. 如果没有,请{php}在您的php脚本中调用php-cli。
  3. 将corntab用于需要定期运行的程序 - 永不完成的脚本永远不是一件好事。

答案 4 :(得分:0)

您可以daemonize创建一个PHP脚本,就像创建Perl或Python守护程序一样。启动和停止脚本取决于操作系统。有一个PEAR类System_Daemon可以帮助编写PHP守护进程。

答案 5 :(得分:0)

如果你只是从互联网上下载东西,那么选择像wget这样的东西不是更明智吗?另一方面,如果你正在爬行/网页抓取,我想做一个cronjob会更好