自动化 Cron 任务概述
配置 cron 是网站安装中的重要步骤,它有助于维护网站资源,例如搜索结果索引、检查 Drupal 核心与模块更新,以及清理临时文件。
正确配置的 cron 任务可以管理多种操作:
什么是 cron?
Cron 是一个在指定时间间隔运行命令的守护进程,这些命令称为 “cron 任务(cron jobs)”。Cron 可用于 Unix、Linux 和 Mac 系统。Windows 服务器则使用 计划任务 来执行命令。实际的 “cron 任务” 是一个定时触发的操作,通常(也是最有效的方式)由你的网站主机服务器执行,但也可以由远程服务器或本地电脑配置运行。
实际上,cron 任务通过访问你网站上的 cron.php 文件来执行,例如:
http://www.example.com/cron.php?cron_key=0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re
。
你可以在 “管理 → 报告 → 状态报告(admin/reports/status)” 页面中的 “Cron 维护任务” 部分找到 cron.php 的准确 URL。
启用 cron
最简单的方法是让 Drupal 自动执行(默认启用),使用内置的 “自动化 cron” 系统。 你可以通过“管理 → 配置 → 系统 → Cron(admin/config/system/cron)” 页面管理它。 默认频率是每 3 小时运行一次。之后,cron 将由访问你网站的用户触发,每隔三小时最多运行一次。
请注意,对于访问量较低的网站,仍建议创建一个独立的 cron 任务。如果要禁用自动化 cron,可将“运行 cron 的间隔时间”下拉框设置为“从不”。
自动化 cron 系统兼容所有操作系统,因为它实际上不依赖系统级的 cron 守护进程。它在每次 Drupal 请求结束时检查上次运行 cron 的时间,如果间隔太长,就在该请求中执行 cron 任务。 该方法的两个缺点是:(1) cron 任务仅在 Drupal 有请求时运行;(2) cron 执行的负载(CPU 与内存消耗)会附加到随机的页面请求上,可能导致性能下降,甚至在复杂网站上超出内存限制。
另一种方式(适用于任何版本的 Drupal)是 创建系统级 cron 任务,或使用外部服务(如 EasyCron 或 Cronless)来执行 cron。这种方法更可靠(因为它始终按计划执行),并且消耗的资源更少(cron 处理不会叠加到页面请求中)。因此,当有选择时,通常推荐使用该方法。如果你创建了独立的 cron 任务,可以完全禁用 Drupal 的“自动化 cron”系统。
禁用“自动化 cron”
出于性能考虑,或者如果你希望 cron 仅通过外部触发执行,可以禁用自动化 cron 系统。
你可以通过进入“管理 → 配置 → 系统 → Cron(admin/config/system/cron)”页面,将“运行 cron 的间隔时间”设置为“从不”来禁用它。
另一种在 Drupal 8 中禁用 cron 的方法是向 settings.php 文件添加以下行:
$config['automated_cron.settings']['interval'] = 0;
请注意,这会将 admin/config/system/cron 中的设置固定为“从不”,并且管理员用户将无法通过界面更改该设置。