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 ジョブを実行すると、エラーなく正常に動作します。問題はdrushに関連しているようです。
ウォッチドッグを確認しましたが、これを drush から実行しようとすると、ウォッチドッグは cron の種類の下に「Cron の実行が時間制限を超え、中止されました」という新しいメッセージを表示します。奇妙なことに、CLI から Enter キーを押した直後にエラーが発生し、現在の実装では単に node_load をデバッグしようとしているだけなので、メンテナンス タスクがコメント アウトされています。リストの最初のノードのタイトルを画面にダンプしてから true を返そうとしているだけなので、ループは 1 回だけにする必要があります。
これがこのような問題である理由は、cron を crond から実行できる唯一の方法が drush を使用することであるからです。しかし、drush がこのコマンドを実行できない場合、私は行き詰まっています。
Drush 5 を使用しても問題は解決しません。