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ジョブをより細かく制御できます。
毎月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 にアクセスしてください。