最后更新:2012年12月21日。 由 peterx 创建于2009年2月4日。 编辑者:screenack, dhakajack。 中文翻译:南文子。原文链接:http://drupal.org/node/369267.
cPanel控制管理域名并且有一个配置计划任务工作的选项,这篇文章有关于你在cpanel里配置计划任务工作时需要的一切。
cPanel是基于主题来版式化页面,本文是基于sundaymorning主题. 如果你使用不同的主题相关的选项位置可能会有改变,你可以使用cpanel中的改变主题(change style)选项来改变显示样式。在sundaymorning和Crimson smoke主题中你可以选择高级(Advanced)然后找到计划任务工作选项(Cron jobs)。
cPanel的产品网站主机管理器(WHM = Web Host Manager)是在私有的虚拟主机里用来管理域名的,如果你的cpanel界面里没有计划任务(cron)选项,你或许就要到WHM里进行添加,而使用不同的cpanel主题cron图标的位置或许会不同。
可能会给你提供标准的和 高级的 Unix风格用户界面,你可能会看到如下面的错误信息。
/usr/bin/crontab permissions are wrong. Please set to 4755
这个Unix风格的界面你可以输入一条指令,这个指令和配置计划任务工作第一页所讲述的相同。
标准页面可以让你从选项列表选择分、时、日或月份的数字,在最后可以添加指令。
下面的图片展示的是计划任务页面中的创建新的计划任务工作部分,包括下拉选框和最后的指令文本输入框。相关选项框会在下面进行解释。
通用设置(Common Settings)下拉框可以让你选择每时、每天或其它有用的选项,如选择 Once a day (0 0 * * *)
, 这条指令里设置分和时为零表示午夜,同样的设置天、月和周为*表示在每周的每一天及每月的每一天。
你可以改变分或时到一个不太忙的时间,例如,一些奥大利亚的站点会在午夜忙于处理从美国发来的请求,在那个时间点正好是美国营业日的开始。
启动计划任务工作的一种简单方式是以不同的方法运行指令文件。Lynx是一种基于网页浏览器的文本文件,可以接受一个URL做为参数。你可以通过计划任务启动Lynx并在源文件参数中指定drupal的计划任务工作。
下图展示最终的命令每天早上6点使用http://petermoulding.com/cron.php
作为源文件运行/usr/bin/lynx
。这条指令让网页服务器在http://petermoulding.com/运行cron.php. Cron.php是drupal的计划任务控制指令。
下面的图片展示编辑选项中的命令,你可以看到指令各部分之间的联系和前面提到过的下拉选项框。
Drupal 7
对于Drupal 7你需要在管理界面添加一个特定的安全字符串,到路径Administration管理 › Reports报告 › Status report状态报告
查看如下的类似字符串,在cpanel的计划任务命令框中使用完整的字符串。
http://example.com.net/cron.php?cron_key=DH7AVdT0uGeN-WfZLkgfutDfDeYrqELjjTZrnulm3RY
Drupal 7也内含一个改写过的Poormanscron模块在Administration管理 › Configuration配置 › System系统 › Cron计划任务
。 Poormanscron模块仅在当有人访问你的站点时会工作,在cpanel中低活性的网页也需要设置计划任务。
Poormanscron模块在计划任务运行时给你有限的控制权,你可以每天查看一次而不是任何时间,如果想把计划任务活动时间控制在特定时间段就会把你退回到cpanel的计划任务页面。在这种情况下你需要把Drupal cron 设置为never
因此在你的cPanel计划任务这外就没有活动的计划任务。
很多网站共用一个服务器
当你在一个服务器上有很多个站点时,你或许想将多个计划任务工作通过几分钟分开来运行,以降低活动中的计划任务的集中度。我有很多计划任务工作是以3分钟间隔从午夜运行早上的6点。
你可以查看你的活动日志来选择最佳时间,cPanel提供Webalizer、 Awstats和 Analog并以Webalizer作为预设。 查看Drupal cron.php运行的网站活动日志,不是计划任务运行的站点。计划任务(Cron)执行很少的工作,大部分是由Cron.php进行处理的。
Lynx 或 Wget
Lynx 的官网是 http://lynx.isc.org/. Wget的官网http://www.gnu.org/software/wget/. Lynx是一个网页浏览器并且读取 cron.php时不需要参数,Lynx是激活cron.php最简单的方法。
不少坚持使用wget. 或许他们没有安装lynx。 Wget获取文件并且在读取一个页面时需要特殊的参数,注意这里的wget不是语义性的. 大的-O
和常规性的小写-o
是不同的选项。
-O -
告诉wget输出文件在哪放置,而第二个破折号-
告诉wget输出的位置是屏幕screen。这些难懂的没有语义的规格选项指定wget的行为 behave,和lynx的预设参数是一样的。 如果你不使用-O -
, 你需要指定取回文件的路径,并保证有合适的权限。
Linux and Unix 有一个叫/dev/null
的垃圾桶。 参数 -O /dev/null
指定wget将输出直接丢弃。
-q
指定退出wget并不产生信息。
-t 1
意思是在第一次请求超时时再试一次,如果不指定次数t参数的预设值是20次。 -t 0
将指定wget进行无限循环重试如果请求的URL丢失。
单一网站
cPanel可以控制多个站点, 如果你只有一个站点,你可试着使用Lamcraft建议的这种方法, 你可以使用文件路径 php /home/example/public_html/cron.php
,而不是使用命令行http://example.com.net/cron.php
。
这一方法可以工作是因为这只一个站点,一个settings.php 文件,和一个数据库。 Drupal cron.php会默认指向这个站点,如果你使用Drupal多站点或是域名模块, 计划任务cron只会运行在一个站点而其它站点你需要使用http://example.com.net/cron.php
。
php
告诉Linux运行指定的文件如同一个PHP命令的方式运行(CLI 命令行模式), /example/
是你的账户路径,如果你的账户是在Red Hat或Fedora Linux中 /public_html
或许会是/www
。
cron jobs计划任务工作开发
你是否在开发使用hook_cron()的模块中执行计划工作? 你可能对下面的说明感兴趣。
Semiclean
Semiclean, http://drupal.org/project/semiclean, 这个模块可以重置cron运行时间日/时计时器, Drupal用来停止cron多次运行。
长期运行的cron jobs
Poormanscron模块和Drupal 7系统是相同的频繁运行,有代码可以防止他们在同一时间运行两次。 定期的 cron是安全的因为你可以指定它每天或每时只运行一次。是什么原为让你要每五分钟运行一次cron job呢, 或许是一支股票更新, 或许因一支股票的分析需要另一个cron job每天运行一次并持续20分钟?
Cron.php可以每五分钟运行一次直到有长期运行的计划任务启动时停止,而新cron job的运行需要等长期运行的计划任务结束。你会遗露5分钟的股票更新直到持续20分钟的股票分析任务结束。
你需要将长期运行的计划任务工作设立成独立的计划任务工作,你可以从cpanel中的计划任务工作独立出 sites/all/modules/stock_analysis/stock_analysis_cron_job.php作为单独的计划任务工作。你可以用编写网络服务一样的方式写stock_analysis_cron_job.php,服务模块包含有编写服务的文档, http://drupal.org/node/113697, 并且一个独立的计划任务工作仅仅是一个不需要输入的Drupal风格的网络服务。