web-dev-qa-db-ja.com

外部cronジョブの起動回数が多すぎる

Wordpressのcronジョブはサーバー上でいくつかの問題を引き起こすように見えたので、これをwp-config.phpの下部に追加しました。

define('DISABLE_WP_CRON', 'true');

そして、「crontab -e」を使用してこれを追加しました:

*/15 * * * * /usr/bin/php /path/to/wordpress/wp-cron.php > /var/log/cronoutput.log

私が間違っていない場合、上記により、サーバーは15分ごとにWordpress cronジョブを実行します。

テストするために、functions.phpテーマファイルにcronjobを追加しました。これは単にメールを送信しました。 functions.phpのこのコードでcronjobを追加しました。

function my_cron_schedules($schedules){
    if(!isset($schedules["5min"])){
        $schedules["5min"] = array(
            'interval' => 5*60,
            'display' => __('Once every 5 minutes'));
    }
    if(!isset($schedules["30min"])){
        $schedules["30min"] = array(
            'interval' => 30*60,
            'display' => __('Once every 30 minutes'));
    }
    return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');

// Schedule an action if it's not already scheduled
if ( ! wp_next_scheduled( 'isa_add_every_five_minutes' ) ) {
    wp_schedule_event( time(), '5min', 'isa_add_every_five_minutes' );
}

// Hook into that action that'll fire every three minutes
add_action( 'isa_add_every_five_minutes', 'isa_add_every_five_minutes_func' );
function isa_add_every_five_minutes_func() {
    mail( '[email protected]', 'this is a cron job', '' );
}

その後、メールが届くのを待ちました。

私が期待していたこと:cronジョブは15分ごとに1回しか実行されないため、15分ごとに1回の電子メールですよね?

しかし、何が起こったのですか:

  1. サーバーのcronジョブは15分ごとに起動する必要がありますが、コードで構成されているとおり、電子メールは約5分ごとに送信されました。
  2. 通常、予想どおり、一度に送信されるメールは1つだけですが、時には1ダースを超えるメールが一度に送信されることもあります。

私の質問は次のとおりです:wp-cron.phpファイルは15分ごとに1回だけ実行されるべきなのに、なぜcronジョブは5分ごとに実行されているのでしょうか?

また、cronジョブが1分間に12回以上実行されることはどのように可能ですか?

1
user2202070

15分ごとにwp-cron.phpを呼び出しているかもしれませんが、cronタスクは5分ごとに発生するように設定されています!

    $schedules["5min"] = array(
        'interval' => 5*60,
        'display' => __('Once every 5 minutes'));

...

wp_schedule_event( time(), '5min', 'isa_add_every_five_minutes' );

代わりに15分ごとに変更します

1
Tom J Nowell