【问题标题】:How to execute a function every n seconds?如何每n秒执行一次函数?
【发布时间】:2013-05-09 12:32:49
【问题描述】:

我正在用 PHP 编写一个监视器来监视主机的正常运行时间。 所以每隔 n 秒我想向主机询问它的状态。我可以简单地创建一个每分钟执行一次的 cronjob,但我也可以这样做:

while(1)
{
  check_status();
  sleep(60);
}

最有效的方法是什么?

【问题讨论】:

    标签: php performance cron sleep


    【解决方案1】:

    更好的方法是使用cron。

    CRON 将每分钟启动一次您的 PHP。如果您的 PHP 崩溃,它将重新启动。如果您手动启动 PHP,但它崩溃了,您将不得不手动重新启动它。不仅如此,使用 CRON,您不必关心机器启动时发生的事情。

    最后一点:PHP 并不是制作这类东西的最佳工具;)

    干杯,

    K.

    【讨论】:

    • 但是性能呢?还是没有显着差异?我知道 PHP 不是最好的工具,它应该是一个 POC ;)
    • 让单个进程(您的 PHP)永久运行比定期启动它的成本更高。您将在 IO 级别(加载文件,启动 PHP 解释器......)有一点开销,但可能会非常非常小;)。但是(重要):不要忘记管理您的 PHP 将被启动两次的情况。如果一次执行持续超过 60 秒就会发生这种情况,crontab 会在第一次执行有时间结束之前启动它。
    【解决方案2】:

    执行 cron 任务,如果机器重新启动,您的进程将自动重新启动。

    【讨论】:

    • 你也可以为它做一份新贵的工作。但它对性能有影响吗?
    • 不知道,我从未使用过 Upstart,但我猜想任何性能损失更有可能来自您每 60 秒运行一次的代码,而不是调度的 CPU 成本。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多