【发布时间】:2010-06-21 16:38:23
【问题描述】:
我正在为 Joomla 编写一个组件,并且有一项特定的任务需要每隔一段时间更新一些统计信息。我想设置一个 cron 作业来执行此操作。唯一的问题是需要用户去设置 cron 来运行 php update stats 脚本。
在安装组件时,如何自动为用户设置 cron 作业?这可能吗?
我已经在 Joomla 的 Akeeba 备份专业组件中看到了这一点,所以我希望我能够做同样的事情。
谢谢
【问题讨论】:
我正在为 Joomla 编写一个组件,并且有一项特定的任务需要每隔一段时间更新一些统计信息。我想设置一个 cron 作业来执行此操作。唯一的问题是需要用户去设置 cron 来运行 php update stats 脚本。
在安装组件时,如何自动为用户设置 cron 作业?这可能吗?
我已经在 Joomla 的 Akeeba 备份专业组件中看到了这一点,所以我希望我能够做同样的事情。
谢谢
【问题讨论】:
理论上你可以创建一个 crontab 文件并从 PHP 中调用它
<?php
exec("crontab $path_to_cron_file");
实际上,这取决于服务器(如果您在共享主机上)是否允许您这样做。
【讨论】:
您需要做的就是在 crontab 文件中写一行,一般存储在/var/spool/cron/crontabs/username 中。 cron 守护进程将看到文件修改时间已更改,并在它醒来进行检查时自动重新加载它
【讨论】:
另一种选择(从服务器负载的角度来看不太理想,但对用户来说更容易)是创建一个插件,每次访问者访问该站点时都会运行该插件。它可以检查进程是否在指定的时间内运行,如果需要运行,则运行它。
iJoobi.com 有另一种解决方案,他们设置了一个服务器来运行 cron 任务,然后 ping 网站上的特定 URL 以启动该过程。 (http://www.ijoobi.com/Help/jNews/jNews-Cron-Task.html)
【讨论】: