如何在 cPanel Hosting (+ WP Cron) 中设置 Cron 作业

Cron 作业允许您运行脚本并自动执行重复性任务,如果手动完成这些任务可能会占用大量时间.在这篇博文中,我们将向您展示如何在 cPanel 中设置 cron 作业以及如何为 WordPress 配置真正的 cron.

本教程涵盖以下内容:

什么是 Cron 作业?

cron 作业允许您自动执行站点上需要定期触发的命令或脚本,或者在特定事件发生时触发以完成重复性任务.

cPanel 包含一个名为 cron(来自希腊语 Chronos)的软件实用程序.此实用程序可让您安排系统重复运行的任务.这些任务称为cron 作业cron 计划,它们从一个名为crontab (CRON TABle) 的文件中运行,该文件列出了所有cron 任务需要执行.

您可以设置使用 cron 作业在每天、每周等特定时间运行的命令或脚本.例如,您可以设置 cron 作业来运行备份或删除临时文件以释放磁盘空间服务器每周(或每两个小时,或每月的特定日期,或每周三下午 2:36).

设置 cron 作业后,它会根据您的计划自动运行.

Cron 命令的组成部分

一个 Cron 命令通常由四部分组成:

  • 定时:这部分让您可以通过指定以分钟、小时、天、月和工作日为单位的固定时间间隔来设置您希望脚本何时运行.
  • 执行:这部分调用您的 cron 作业需要运行的 PHP,它通常位于路径 /usr/bin/php 中.
  • 脚本路径:这是您要运行的文件的完整路径(例如 /home/user/public_html/index.php)
  • 输出:这个可选部分让您可以将 cron 输出写入文件或丢弃它.例如,要丢弃输出可能需要添加如下内容:/dev/null 2>&1.

通常,任何需要 cron 作业的脚本都会为您提供使用该脚本所需的路径或命令.您的托管服务提供商也可能会为您提供或向您提供有关构建 cron 作业命令的具体说明.然后,您可以使用提供的路径或命令创建一个 cron 作业(并根据需要将行或命令中的任何占位符字符串替换为您站点的详细信息).

例如,在下面的屏幕截图中,我的 cPanel 仪表板自动提供了一些 PHP 命令示例,其中包含我站点的用户名 (helpservices) 和命令路径中包含的示例 PHP 版本.

PHP command examples.
PHP 命令示例.

注意:cPanel 建议您熟悉 Linux命令有效地使用 cron 作业并在添加 cron 作业之前运行您的脚本,以避免遇到问题.

如何在 cPanel 中设置 Cron 作业

要在 cPanel 中设置 Cron 作业,请登录您的 cPanel 仪表板,然后向下滚动到"高级"部分并单击"Cron 作业".

cPanel Dashboard-Cron Jobs
在 cPanel 的高级部分中选择 Cron 作业.

这会显示Cron Jobs 屏幕.在这里,您可以设置电子邮件通知(请参阅下一节)、添加新的 Cron 作业,以及查看您已设置且当前正在运行的所有 Cron 作业的列表.

向下滚动到添加新的 Cron 作业部分.您可以从通用设置下拉菜单中为要运行的 Cron 作业选择预设间隔,也可以使用以下选项输入您自己的自定义值:

  • 分钟:每次运行 cron 作业之间的分钟数,或您希望运行 cron 作业的每小时的分钟数.
  • 小时:每次运行 cron 作业之间的小时数,或者您希望运行 cron 作业的每一天的小时数.
  • :每次 cron 作业运行之间的天数,或您希望运行 cron 作业的月份中的哪一天.
  • 月份:每次运行 cron 作业之间的月数,或您希望运行 cron 作业的月份.
  • 工作日:您希望在一周中的哪几天运行 cron 作业.
Cron-Common Settings
Cron – 通用设置文本框.

Common Settings 菜单包含典型的 cron 作业配置设置,括号中的数字或星号表示应何时运行 cron 作业.

Cron-Common Settings menu.
Cron – 通用设置菜单.

如果您选择这些设置之一,系统会自动使用您选择的设置填充下面的文本框.

因此,例如,如果我们选择设置一个 cron 作业来每周运行一次脚本的选项......

Cron-Common Settings: Weekly schedule.
让我们将 cron 作业设置为每周运行一次.

文本框将自动填充我们所选设置的值.

Cron Job text boxes auto-populated with values to run once a week.
Cron Job 文本框自动填充值以运行一次一个星期.

在上面的示例中,我们的 cron 作业计划在每个月的每个星期日的午夜时分运行.

但是,您可以使用子下拉菜单在文本框中输入自定义值.这让您可以轻松修改和调整 Cron 作业的预定间隔.

Cron Job schedule with adjusted settings.
使用 sub-drop 调整 cron 作业的设置-下拉菜单和文本框.

最后一步是输入您希望 cron 作业运行的实际命令.您必须指定要运行的命令的绝对路径.

命令:文本框中键入或粘贴命令,然后单击添加新的 Cron 作业.

Cron job command
键入或粘贴 cron 作业命令.

这会将您的 Cron 作业添加到 Current Cron Jobs 列表中.

Current cron jobs
您的 cron 作业已添加到 Current Cron Jobs 列表中.

如何在运行 Cron 作业后获取电子邮件通知

您可以选择在每次 cron 作业运行产生输出的命令时接收(或停止接收)电子邮件.

如果您想知道您的一项作业何时无法运行并且您想查看错误,这将非常有用.

只需向下滚动到 Cron 电子邮件部分,输入电子邮件地址,然后点击更新电子邮件按钮.

Cron Email
在运行 cron 作业后通过电子邮件收到通知.

您也可以选择在运行 cron 作业后不接收电子邮件:

  • 要为所有 cron 作业禁用电子邮件通知,请删除电子邮件地址.为此,请将电子邮件字段留空并单击更新电子邮件按钮.当前电子邮件地址应显示为 (none).
  • 要禁用单个 cron 作业的电子邮件通知,请添加主机提供的信息(见上面的屏幕截图)以将命令的输出重定向到 /dev/null.(例如/usr/local/cpanel/bin/is_script_stuck/dev/null 2>&1)

如何编辑 Cron 作业

要编辑您的 Cron 作业设置,请转到"当前 Cron 作业"部分,然后单击 操作 >编辑链接.

Edit cron job.
编辑定时任务.

更改文本框中的值,然后单击"编辑行"按钮以更新您的设置.

Edit cron job settings.
编辑 cron 作业设置.

您的 Cron 作业设置现已更新.

Updated cron job settings.
更新了 cron 作业设置.

如何删除 Cron 作业

要删除 Cron 作业,请转到 Current Cron Jobs 部分并单击 Actions >删除链接.

Delete cron job.
删除 cron 作业.

按"删除"按钮确认删除.

Confirm cron job deletion.
确认cron作业删除.

选定的 Cron 作业将从 Current Cron Jobs 部分中删除.

No cron jobs.
当前没有定时任务.

有关使用 Cron 作业的有用提示和附加信息

以下是有关使用 Cron 作业的一些其他提示和有用信息:

如果您的 cPanel 仪表板中没有 Cron 作业

某些主机不允许用户运行 cron 作业.如果您的主机没有在您的 cPanel 仪表板中提供 cron 作业,您仍然可以使用如下所列的外部服务创建和运行 cron 作业:

如何检查您的 Cron 作业是否已运行

某些 cron 作业会产生输出(例如文件、电子邮件或网页),而其他的则不会.更容易检查 cron 是否为产生输出的作业运行.

对于在幕后执行任务且不产生输出的 cron 作业,您需要拥有服务器的 root 访问权限以检查日志并确定作业是否按计划运行.

您可以使用 SSH 客户端检查您的服务器日志.您的主机应提供检查 cron 脚本日志的命令,输出通常包括 cron 作业运行的日期和时间,以及服务器名称、cron ID、cPanel 用户名和运行的命令.脚本名称应显示在命令末尾.

如何避免冲突

cPanel 建议在安排 cron 作业时谨慎行事.您应该在 cron 作业之间留出足够的时间来完成上一个 cron 作业.如果您安排它们运行太频繁,服务器可能会在最后一个 cron 作业结束之前启动另一个 cron 作业.这种重复会降低您的服务器速度并降低其性能.

此外,许多主机建议不要将 cron 设置为以小于 5 分钟的固定间隔运行(有些主机甚至不允许您以小于 15 分钟的间隔运行它们).

WordPress Cron (WP-Cron)

除了从您的托管服务器运行 cron 作业外,WordPress 还有一个内部内置函数,用于在 WordPress 站点上运行计划任务,称为 WordPress Cron(WP-Cron,wp-cron.php).

WordPress 核心和许多插件需要一个调度系统来执行基于时间的任务.这些依赖 WP-Cron 来运行后端功能,例如检查更新、创建备份、从垃圾箱中删除旧评论等.

但是,许多托管服务是共享的,并且不提供对系统调度程序的访问.WP-Cron 允许 WordPress 在几乎任何托管环境中运行.

注意:您可以使用 WP Crontrol 之类的插件查看和控制 WP-Cron 系统中的 cron 事件.

如何为 WordPress 配置真正的 Cron

虽然 WordPress 内置的 Cron 处理程序是一个非常有用的功能,但 WP-Cron 并不是一个真正的 cron 工作.它只模拟系统 cron 的作用.但是,WP-Cron 不会连续运行.它仅在有人访问您的网站时触发.

在高流量网站上,WP-Cron 不是问题.正如我们的一位成员(UpdraftPlus.com):

  • 仅当存在过期的 cron 作业(即仅在需要时)时,才会在页面加载时调用 WordPress 核心中的代码.
  • 在高流量的站点中,cron 作业将准确按计划运行.如果您切换到外部 cron 调用程序,则您的 cron 作业只会在达到该计划时运行.
  • 高流量网站往往更复杂,因此有更多的 cron 作业.在 WP-Cron 上,作业在需要时精确运行.切换到外部 cron 会大大增加您的 cron 作业未按时运行的几率,因为它们现在只会以您为其任务设置的任何频率(每 10 分钟、5 分钟、1 分钟等)运行.

但是,在低流量网站上,如果用户访问网站的频率不够高,无法加载页面,则可能会错过 cron 计划.

虽然我们团队和成员社区的专家都认为,除非您确切地知道自己在做什么,否则不应禁用 WP-Cron 并使用外部 cron 调度程序,但如果您被要求禁用 WP-Cron,以下是如何这样做:

要禁用 WP-Cron,请打开 wp-config.php 文件进行编辑,并在 "仅此而已,停止编辑!祝您出版愉快." 行:

define('DISABLE_WP_CRON', true);

Disable WP-Cron.
禁用WP-Cron.

注意:这会禁止 WP-Cron 在页面加载时运行,而不是通过 wp-cron.php 直接调用.

然后,您可以设置系统的任务调度程序,通过创建 cron 作业并添加以下命令(请记住将 yourdomain.com 替换为您的实际域):

wget-q-O-http://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

这里要提到的最后一点(再次感谢 David Anderson 提出这一点):

转移到外部 cron 的唯一真实情况是,如果您在一个流量非常低的网站上,由于某种原因(例如您的网站受密码保护),您无法安排外部访问,并且这些工作很重要准时运行.否则,就别管它了,一切都会好起来的.

我们同意这一点.因此,如果您的网站在 WPMU DEV 托管上运行,我们会每 5 分钟自动运行一次 WP-Cron.拥有默认预设 cron 有助于低流量站点,因为它保证计划任务至少每 5 分钟运行一次.

最后,正如 David Anderson 还指出的那样,如果您有很多 cron 作业,那么即使每 1 分钟也可能不足以处理所有这些作业.许多流行的插件都有计划每分钟运行一次的作业.如果这些需要花费大量时间,他们可能会延迟其他人的跑步.

WordPress 多站点上的 WP-Cron

如果您使用的是 WordPress Multisite,请查看本教程(来自 ShortURL.gg) 在 为什么 WPMU cron 不同于独立的 WordPress 安装以及如何正确设置.

Cronfused 了吗?

别这样!如果这看起来太复杂,请不要担心.幸运的是,我们的团队随时为您提供 24/7 全天候专家帮助和支持,满足您的任何需求.

VPS1352主机测评网(www.vps1352.com)
本文链接:https://www.vps1352.com/7673.html

5

发表回复