【问题标题】:Can we configure cron job's time interval through PHP script?我们可以通过 PHP 脚本配置 cron 作业的时间间隔吗?
【发布时间】:2011-08-08 20:39:06
【问题描述】:

我们可以通过PHP脚本配置cron作业的时间间隔,这样时间间隔不应该手动设置,而是通过PHP脚本,无论是从数据库中获取时间间隔还是固定时间间隔(但从PHP代码中)。
提前致谢

【问题讨论】:

    标签: php cron


    【解决方案1】:

    我认为让您的应用程序控制事件的频率而不是 cronjob 会更好。让 cronjob 每分钟运行您的应用程序的某个操作。例如,该操作会检查名为 cronjobs 的数据库表,并运行由频率数或时间戳标记为运行的作业。

    如果您这样做,您可以从任何地方以编程方式添加新作业,例如通过 cronjob 接口。 该解决方案更易于维护、测试和记录

    【讨论】:

      【解决方案2】:

      有两种方法。要么在每次更改所需值时重新创建 crontab,要么定期触发 cron 作业,例如每分钟,并从脚本中测试开始条件。

      【讨论】:

        【解决方案3】:

        如果有足够的服务器权限,您应该能够使用来自 PHP 脚本的系统级调用,使用 system() 来执行此操作。

        【讨论】:

          【解决方案4】:

          最好的办法是编写一个能够创建crontab-文件的 PHP 脚本(并以足够的权限运行脚本)。

          site 提供了一个非常好的教程。

          但是,对cron 的依赖将使您的代码依赖于支持cron 的平台。因此,另一种解决方案是在 PHP 本身中实现定时执行逻辑(即循环代码,并自己检查时间)。

          您可以通过创建一个可以提供脚本的Scheduler-interface 来组合上述两种解决方案,并确保它在适当的时间执行。这样你就可以在 linux 上使用cron 来实现它,但在 Windows 上用另一种方式:

          interface Scheduler {
            function schedule($script);
          }
          class CronScheduler {
            function schedule($script) {
              append_cronjob($script);
            }
          }
          

          不过,我在这里可能做得过火了。

          【讨论】:

            【解决方案5】:

            如果您想这样做,我建议您改用 Message Queue Beanstalkd。它可以进行延迟放置程序化并且非常快。我建议你使用pheanstalk 与 Beanstalkd 交谈。

            【讨论】:

              猜你喜欢
              • 2019-06-03
              • 2011-07-05
              • 2011-07-22
              • 2013-02-05
              • 1970-01-01
              • 1970-01-01
              • 2020-02-28
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多