我有一个PHP文件,它以一致的间隔执行一些任务。
我已经将该PHP文件放置在自定义模块文件夹中,但我发现像drupal_set_message()这样的Drupal函数在PHP中不可用。
如何在这个PHP文件中包含Drupal函数?如何将这个php文件设置为作为cron作业运行?
发布于 2011-05-05 07:39:17
发布于 2011-05-05 08:43:41
Berdir报告的内容是正确的;如果正确设置了Cron任务,则在cron作业期间调用hook_cron()的实现。这意味着您需要添加执行以下命令之一的cron作业:
/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1curl --silent --compressed http://example.com/cron.php据我所知,您还需要使用Drupal管理页面中报告的cron键。
如果出于任何原因(我怀疑您是否有理由这么做),您只需要执行该PHP脚本,而不是所有Drupal cron任务,这意味着您实际上已经设置了两个cron作业,其中一个任务已经在执行Drupal cron任务,那么您应该在正在尝试执行cron任务的PHP文件的开头添加以下行:
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中定义的。
https://drupal.stackexchange.com/questions/3137
复制相似问题