首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal的Cron工作7

Drupal的Cron工作7
EN

Drupal用户
提问于 2011-05-05 05:59:37
回答 2查看 13K关注 0票数 4

我有一个PHP文件,它以一致的间隔执行一些任务。

我已经将该PHP文件放置在自定义模块文件夹中,但我发现像drupal_set_message()这样的Drupal函数在PHP中不可用。

如何在这个PHP文件中包含Drupal函数?如何将这个php文件设置为作为cron作业运行?

EN

回答 2

Drupal用户

回答已采纳

发布于 2011-05-05 07:39:17

您需要在模块中实现钩子_cron()并在那里执行这些任务。

然后,drupal将在默认cron处理期间自动执行这些任务。

您可能只使用drupal_set_message()作为示例,但请注意,在hook_cron()实现中使用该函数是没有意义的,因为没有用户可以读取这些消息。作为另一种选择,您可以使用监督犬()记录消息。

票数 12
EN

Drupal用户

发布于 2011-05-05 08:43:41

Berdir报告的内容是正确的;如果正确设置了Cron任务,则在cron作业期间调用hook_cron()的实现。这意味着您需要添加执行以下命令之一的cron作业:

代码语言:javascript
复制
/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1
代码语言:javascript
复制
curl --silent --compressed http://example.com/cron.php

据我所知,您还需要使用Drupal管理页面中报告的cron键。

如果出于任何原因(我怀疑您是否有理由这么做),您只需要执行该PHP脚本,而不是所有Drupal cron任务,这意味着您实际上已经设置了两个cron作业,其中一个任务已经在执行Drupal cron任务,那么您应该在正在尝试执行cron任务的PHP文件的开头添加以下行:

代码语言:javascript
复制
define('DRUPAL_ROOT', 'Set here the directory where Drupal is installed');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

这样,PHP文件将能够访问bootstrap.inc中可用的所有函数。如果您需要一个在另一个Drupal文件中可用的函数,那么您需要将该文件包含在require_once()中;如果您需要一个来自Drupal模块的函数,那么您需要在require_once()行之后添加drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL)

如果您需要一个来自模块的函数,那么您应该真正实现一个实现hook_cron()的自定义模块(如果您还没有这个模块),其中包括您必须执行的PHP。

正如Berdir所报告的,Drupal任务不应该调用drupal_set_message(),因为在执行cron任务时,这些消息是不可见的。如果您需要报告管理员用户可以看到的错误消息,那么代码需要调用监督犬(),这需要完全引导Drupal;函数是在bootstrap.inc中定义的。

票数 3
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/3137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档