你在这里

在cPanel中配置cron计划任务工作

最后更新: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主界面截图,展示高级选项里的计划任务工作图标。cron jobs icon

cPanel的产品网站主机管理器(WHM = Web Host Manager)是在私有的虚拟主机里用来管理域名的,如果你的cpanel界面里没有计划任务(cron)选项,你或许就要到WHM里进行添加,而使用不同的cpanel主题cron图标的位置或许会不同。

可能会给你提供标准的和 高级的 Unix风格用户界面,你可能会看到如下面的错误信息。

/usr/bin/crontab permissions are wrong. Please set to 4755

这个Unix风格的界面你可以输入一条指令,这个指令和配置计划任务工作第一页所讲述的相同。

标准页面可以让你从选项列表选择分、时、日或月份的数字,在最后可以添加指令。

下面的图片展示的是计划任务页面中的创建新的计划任务工作部分,包括下拉选框和最后的指令文本输入框。相关选项框会在下面进行解释。

The cPanel cron jobs screen showing the add new cron job section

通用设置(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的计划任务控制指令。

The cPanel cron jobs screen showing the command section

下面的图片展示编辑选项中的命令,你可以看到指令各部分之间的联系和前面提到过的下拉选项框。

The cPanel cron jobs screen showing the command in the edit option

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风格的网络服务。

附件 大小
Configuring cron jobs in cPanel Advanced.png 23.88 KB
Configuring cron jobs in cPanel command.png 2.36 KB
Configuring cron jobs in cPanel Add new cron job.png 7.23 KB
Configuring cron jobs in cPanel edit.png 3.26 KB