gpt4 book ai didi

php - 通过 Drush 运行并调用 node_load() 时 Cron 失败

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:17 25 4
gpt4 key购买 nike

我有一个 Drupal 6 站点和一个自定义模块,该模块在运行 cron 时在某些节点上执行一些维护操作。

我的代码非常简单:

function mymodule_cron() {
// get all the nodes that need maintenance
$result = db_query("SELECT * FROM {mymodule_nodes}");

while ($row = db_fetch_object($result)) {
// load the node
$node = node_load($row->nid); // Causes Drush Error

// Perform Maintenance Tasks
}
}

问题是,当我使用 drush core-cron 运行 cron 时,它失败并显示:“由于不可恢复的错误,drush 命令异常终止”

使用一些基本的调试技巧,我将问题追溯到 node_load 调用。这样调用cron中的node_load会不会导致drush core-cron失败?

-sh-4.1$ drush status
Drupal version : 6.17
Database : Connected
Drupal bootstrap : Successful
Drush version : 4.5
Drush configuration :
Drush alias files :
-sh-4.1$ php -v
PHP 5.3.6 (cli) (built: Mar 17 2011 20:56:13)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
-sh-4.1$ httpd -v
Server version: Apache/2.2.17 (Unix)
Server built: Oct 27 2010 10:04:21

从 Web 界面运行 Cron Job 工作正常,没有错误。这个问题似乎与 drush 有关。

我检查了看门狗,每当我尝试从 drush 运行它时,看门狗都会在 cron 类型下显示一条新消息,说“Cron run exceeded the time limit ans was aborted”。奇怪的是,我在从 CLI 中按回车键后几乎立即收到错误,在我当前的实现中,我只是尝试调试 node_load,所以我的维护任务被注释掉了。我只是想将列表中第一个节点的标题转储到屏幕上,然后返回 true,因此它应该只循环一次。

之所以会出现这样的问题,是因为我们能够让 cron 从 crond 运行的唯一方法是使用 drush。但是,如果 drush 不能执行这个命令,那么我就陷入了僵局。

即使使用 Drush 5 也无法解决问题。

最佳答案

您是否启用了 PHP 过滤器模块?我敢打赌有人在您的一个节点中放置了一些错误代码。这是永远不应该使用 php 模块的众多原因之一....

关于php - 通过 Drush 运行并调用 node_load() 时 Cron 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com