web-dev-qa-db-ja.com

cron drupal 8 for my module?

drupal 8でモジュールを実行しています。毎月関数を自動的に実行する方法を知りたいのですが、Cronで実行されていると思いますが、毎週しか実行できません。関数から編集します。

Cron_exampleモジュールの変更例。これは、cronタスクがcronで設定される間隔には関係ありません。

これは重要です。おそらく、異なるインターバル要件を使用して、遅かれ早かれ別のcronタスクを設定します。また、多くのシステムタスクでは、より頻繁にcronを実行する必要があります。

function cron_example_cron() {
  $interval = 30*24*60*60; // Approx a month of interval

  // We usually don't want to act every time cron runs (which could be every
  // minute) so keep a time for the next run in the site state.
  $next_execution = \Drupal::state()->get('cron_example.next_execution');
  $next_execution = !empty($next_execution) ? $next_execution : 0;
  if (REQUEST_TIME >= $next_execution) {
    // This is a silly example of a cron job.
    // It just makes it obvious that the job has run without
    // making any changes to your database.
    \Drupal::logger('cron_example')->notice('cron_example ran');
    if (\Drupal::state()->get('cron_example_show_status_message')) {
      drupal_set_message(t('cron_example executed at %time', ['%time' => date_iso8601(REQUEST_TIME)]));
      \Drupal::state()->set('cron_example_show_status_message', FALSE);
    }
    \Drupal::state()->set('cron_example.next_execution', REQUEST_TIME + $interval);
  }
}

また、より細かく調整されたアプローチの場合、 ltimate Cron モジュールを使用できます。これにより、cronジョブをより細かく制御できます。

7
Anish Sheela

毎月cronを実行する最良の方法は、次のコマンドをcrontabに追加することです。

0 0 1 * * wget -O - -q -t 1 http://CRON_URL

http:// CRON_URL は、Drupalバージョンごとに異なるURLに置き換えられます。D8の場合、これは http:// www。 example.com/cron/ 。このURLは、ステータスレポート—レポート管理>レポート>ステータス(/ admin/reports/status)から取得できます。

詳細については、 https://www.drupal.org/docs/7/setting-up-cron-for-drupal/configuring-cron-jobs-using-the-cron-command にアクセスしてください。

1
Ash U