2010-11-25 80 views
3

我想在这会下载一些东西,它们存储在服务器不断运行PHP程序..如何在服务器上连续运行一个php程序?

我想创建一个脚本并运行在cron的..

但我不知道有没有任何其他简单的方法或轻量级组件,在连续运行时,服务器内存会更少?

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

创造了无限max_execution时间PHP脚本,并与一些睡眠运行一段时间(true)循环(无限循环)中的代码,然后开始使用PHP程序..

哪个会是更好的方法来做到这一点?

回答

2

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

我建议你用PHP and daemon tags来读一些其他的问题。这里有一个fewofmy的答案。

但是说实话,CRON是相当轻量级的,除非它需要实时(或者对您来说意味着什么)将PHP写入守护进程比开发工作更有效。

1

运行一个cron--这是他们在那里。

您的循环想法while(TRUE)sleep() ing很脆弱,可能不像其他任何开发人员那样清楚,然后运行cron作业。

+0

克朗是好的,但我想知道是否有任何其他面向服务器的方法,将使用较少的内存...如果它连续运行,则没有再次重复该任务的风险,但是有机会在运行cron时重复运行 – Vijay 2010-11-25 05:31:40

+0

@kvijayhari您可以通过shell包装器修复cron的两倍。他是rsync的一个例子,但它可以修复为PHP脚本工作。 https://gist.github.com/714960。它们将在cron中执行,而不是直接在PHP中执行。 – 2010-11-25 05:38:30

0

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

0
  1. 为什么SSH不能进入机器并在控制台中运行php?
  2. 如果没有,请执行popen()来调用php脚本中的php-cli。
  3. 对于需要定期运行的程序使用corntab - 永不结束的脚本永远不会是件好事。
0

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

0

如果你只是从互联网上下载东西,用wget这样的东西去比较明智吗?另一方面,如果你正在抓取/网络抓取,我想做一个cronjob会更好

相关问题