hook_cronを使って異常終了した場合の挙動と対処などについて質問させてください。

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
starbucks.espresso.journey's picture

hook_cronを使って異常終了した場合の挙動と対処などについて質問させてください。

以下のサイトでは、hook_cronで呼び出された処理がabortした場合、
drupal_cron_cleanup(); を呼び出すよう書かれていますが、
リファレンスを見るとdrupal_cron_cleanup();は非推奨となっています。

結局のところ、hook_cronで呼び出された処理がabortした場合、
お作法的に特定の関数を呼ぶあるいはテクニック的にこうすると良いなどの
ノウハウを教えていただけたらなと思います。

http://drupal.stackexchange.com/questions/17505/how-to-abort-a-cron-run
https://api.drupal.org/api/drupal/includes!common.inc/function/drupal_cron_cleanup/7

Comments

Drupal 7.8 から、エラーがあった際は

dokumori's picture

Drupal 7.8 から、エラーがあった際は hook_cron() を実装しているモジュールごとに exception を投げて、それが watchdog エラーログに残るように変更されました。その前は、一つのモジュールでエラーがあるとそれ以降の cron が走らない設計でした。

https://www.drupal.org/node/978944#comment-4859754

これ以降 variables テーブル内の semaphore_cron という variable は、仮に存在したとしても参照されること自体ないので、drupal_cron_cleanup() という関数を呼んでも cron の挙動に何ら影響を及ぼさないことになります。

Watchdog のログは Database logging モジュールまたは Syslog モジュールにより記録されるので、エラーの内容をもとに、そのエラーが起こらないような処置を施すのが良いと思います。

ちなみに Database logging モジュールは、アクセス数の多いサイトではこのモジュールが原因でサイトが落ちることがあるため Syslog モジュールをお勧めします。

Drupal 7.8 から cron

starbucks.espresso.journey's picture

Drupal 7.8 から cron まわりの仕様が変わったのですね。
Drupal 7.8 を使用しているため、非常に有用な情報です。ありがとうございます。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week