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

如何在服务器上连续运行php程序?,php,cron,daemon,Php,Cron,Daemon,我想在服务器上不断运行一个php程序,下载并存储一些东西 我正在考虑创建一个脚本并在cron中运行它 但我想知道还有没有其他简单的方法或轻量级组件在连续运行时占用更少的服务器内存 我想到了另一件简单的事 创建一个具有无限最大执行时间的php脚本,并在一个while(true)循环(无限循环)中运行代码,然后使用php启动程序 哪种方法更适合这样做?运行cron-这就是他们的目的 您关于在运行cron作业时循环(TRUE)和sleep()的想法是不可靠的,可能对其他任何运行cron作业的开发人员来

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

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

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

我想到了另一件简单的事

创建一个具有无限最大执行时间的php脚本,并在一个while(true)循环(无限循环)中运行代码,然后使用php启动程序


哪种方法更适合这样做?

运行cron-这就是他们的目的


您关于在运行cron作业时循环
(TRUE)
sleep()
的想法是不可靠的,可能对其他任何运行cron作业的开发人员来说都不太清楚。

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

  • 为什么不在机器上安装SSH并在控制台上运行php呢
  • 如果没有,请执行
    popen()
    以在php脚本中调用php cli
  • 对于需要定期运行的程序,请使用corntab——永不结束的脚本从来都不是一件好事

  • 我已经创建了一个名为的库,它可以帮助抽象出所有的
    while(1)
    疯狂,并提供添加事件源的能力(这或多或少是一个基本的运行循环,您可以在GLib、Cocoa、node.js中使用)。如果您喜欢这种写作风格(基于事件的还是循环驱动的),有一些方法可以让您知道

    我建议大家一起阅读其他一些问题。这里有一个答案


    但老实说,CRON是相当轻量级的,除非它需要实时(或者对您来说意味着什么),否则将PHP写入守护进程比它的工作要复杂得多。

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

    如果你只是从互联网上下载东西,使用wget这样的工具不是更明智吗?另一方面,如果你正在爬网/抓取网页,我想做cronjob会更好

    Cron还可以,但我想知道是否有其他面向服务器的方法会占用更少的内存。。。如果它连续运行,就不会有再次重复任务的风险,但在运行过程中有机会重复cron@kvijayhari您可以通过shell包装器修复cron。他是rsync的一个示例,但可以将其修复为适用于PHP脚本。它们将在cron中执行,而不是直接在PHP中执行。@kvijayhari我认为循环和睡眠将需要更多内存,因为这将是一个不断进行的进程。此外,如果某些内存未正确释放,则文件将开始泄漏内存。cron将启动您的进程,它可以运行,然后退出,并将内存返回到您的服务器。这就是为什么我要求一个连续运行的程序,如果它连续运行,则不会再次重复该任务,但在通过cron运行时有机会重复