web-dev-qa-db-ja.com

Elysia cronモジュールを使用したcronタスクは手動でのみ実行されますか?

私は Elysia cron モジュールに付属しているcronapiを使用しており、ここに私のコードがあります:

function MYMODULE_cronapi($op, $job = NULL) {
  $items['example_news_cron'] = array(
    'description' => 'Send mail with news',
    'rule' => '*/5 * * * *', // Every 5 minutes
    'callback' => 'example_news_fetch'
  );
  return $items;
}
function example_news_fetch() {
  // Do something here 
}

cronは、adminセクション(Elysia cron構成)で手動で実行した場合にのみ機能しますが、特定の期間ごとに実行する必要があります。

いくつかの構成がない、またはシステム要件がありますか

4
Boussetta moez

「cronは、adminセクション(Elysia cron構成)で手動で実行した場合にのみ機能しますが、特定の期間ごとに実行する必要があります!」と言ったように、コードは正常に機能しています。

デフォルトでは、Drupalサイトにアクセスするとcronが実行され、cronが最後に実行されたのはいつかが評価されるため、所定の時間が経過するとcronが再度実行されますが、そのサイトにアクセスする必要があります。したがって、修正期間に実行することになっているタスクがある場合、Drupalサイトが誰かによってアクセスされるのを待つことはできません。代わりに、サーバーにcrontabを設定する必要があります。つまり、サーバーは、スケジュールされた時刻にcron.phpにpingします。

Linuxベースのシステムでcronタブを設定する方法 を確認するか、代替オプションとして、cronタブの設定中にdrushを使用できます( cron.html を参照)。

7
arpitr