代码之家  ›  专栏  ›  技术社区  ›  Martin

有没有一种方法可以让PHP或shell脚本在Web服务器上设置cron作业?

  •  1
  • Martin  · 技术社区  · 14 年前

    我正在为Joomla编写一个组件,有一个特定的任务需要经常更新一些统计信息。我想设置一个cron作业来执行此操作。唯一的问题是需要用户去设置cron来运行php update stats脚本。

    在安装组件时,如何为用户自动设置cron作业?这有可能吗?

    我在joomla的akeeba backup pro组件中看到了这个实现,所以我希望我能够做同样的事情。

    谢谢

    3 回复  |  直到 14 年前
        1
  •  1
  •   Matteo Riva    14 年前

    理论上,您可以创建一个crontab文件并从PHP调用它。

    <?php
    exec("crontab $path_to_cron_file");
    

    实际上,这取决于服务器(如果您在共享主机上)是否允许您这样做。

        2
  •  1
  •   Michael Mrozek    14 年前

    您所需要做的就是向crontab文件中写入一行,通常存储在 /var/spool/cron/crontabs/username . cron守护进程将看到文件修改时间已更改,并在唤醒进行检查时自动重新加载文件。

        3
  •  0
  •   Don Cranford    14 年前

    另一个选择(从服务器负载的角度看不太理想,但对用户来说更容易)是创建一个插件,每次访问者访问站点时都会运行该插件。它可以检查进程是否在指定的时间内运行,然后在需要运行时运行它。

    ijoobi.com还有另一个解决方案,他们在其中设置了一个服务器来运行cron任务,然后在网站上ping特定的URL来启动这个过程。( http://www.ijoobi.com/Help/jNews/jNews-Cron-Task.html )