在 drupal 7 中设置 cron 作业

问题描述 投票:0回答:3

我对 Drupal 还很陌生,我的任务是设置一个每小时运行一次的 cron 作业。我有 php 文件,它生成将在不同站点上使用的 xml 文件。

我的问题是:我是否将 mycron.php 放在根目录中(与 cron.php 相同)并将 crontab 配置为每小时运行 mycron.php ?

任何指导表示赞赏。

drupal cron drupal-7
3个回答
2
投票

您可以在自定义模块中使用 hook_cron() 编写自己的 cron 作业,并使用项目模块 Elysia Cron 进行设置,以了解每个 cron 任务的时间和频率。


1
投票

最初我带着类似的问题来到这个页面。这基本上就是我发现的。

您不是从 PHP 代码运行 cron 作业,而是从服务器操作系统运行 cron 作业。 Cron 作业只能在 Linux、Unix 或 macOS 中设置,Windows 没有预装 cron 系统。

如果您使用的是 VPS,则可以从操作系统(例如 ubuntu)设置 cron 作业。或者,如果您使用共享托管,您很可能能够从帐户中的管理菜单设置 cron 作业,这取决于您的托管提供商。 您要做的就是在 Drupal 模块

hook_menu

中创建一个端点。菜单中的端点应链接到回调函数,该函数将执行您想要定期运行的操作。 function module_name_menu() { return [ 'path/to/endpoint/%' => [ 'title' => t(Menu title), 'description' => 'Some description', 'page callback' => 'name_of_function_to_call', // Optional argument passed to the callback function, number relates to the position in the path 'page arguments' => [3], 'access arguments' => ['type of access'], 'type' => MENU_CALLBACK, ] ]; }

检查 hook_menu 链接以查看函数返回数组中的元素的作用。

/** * Cron job callback function * @param string $param Parameter sent through the url */ function name_of_function_to_call($param) { // Do something with the param and perform some tasks }

在您要设置的 cron 作业中,您必须将 cron 作业指向端点位置。下面示例中的 cron 作业将在 1 月的每个第一天和 1 月的每个星期一的 4 点 1 分运行(分钟、小时、该月的某天、该月、该周的某天):

01 04 1 1 1 wget -O - -q -t 1 http://siteurl.tld/path/to/endpoint/argument

(来自 
Drupal 文档

的示例,执行 man wget 来了解 wget 选项的作用)


编辑:

你显然也有hook_cron选项。您将代码放入 ..._cron() {} 函数中,该函数将在页面范围的 cron 作业运行时运行,但不会给您留下很多控制权。

    


-1
投票

© www.soinside.com 2019 - 2024. All rights reserved.