WordPress“ Cron” wp_schedule_eventをデバッグする方法


22

WordPress Cronの問題をデバッグするにはどうすればよいですか?ユーザーがサイトにアクセスしたときにトリガーされると思いますが、ジョブは「非同期に」実行されるため、エラーは表示されません。それでは、どのようにエラーをデバッグできますか?

私が使う wp schedule event


1
このドキュメントを読む:developer.wordpress.org/plugins/cron/...
Nanheクマール

Advanced Cron Managerプラグインを使用
ゲスト

回答:


27

次を呼び出して、WP cronを手動で実行できます。 http://example.com/wp-cron.php?doing_wp_cron

デバッグ中に自動cronを実行したくない場合は、これを/wp-config.phpファイルに追加します。

define('DISABLE_WP_CRON', true);

開発環境でデバッグ情報を出力したい場合、そのように手動で呼び出すとデバッグ出力が表示されます。

または、PHPの組み込みerror_log関数を使用して、デバッグ用にメッセージ文字列をエラーログに記録できます。Rarstが述べたように、これをWP_DEBUG設定と組み合わせて使用​​する必要があります


?doing_cronパラメーターのヒントをありがとう。
rofflox

3
?doing_wp_cron代わりにすべきだと思います?doing_cron
liviucmg

@liviucmgはい、そうです。微調整しました。
サイモンイースト

1
された?doing_wp_cronパラメータが必要?EasyCronのマニュアル設定チュートリアルを参照してください
-AlecRust

@gabrielk?doing_cronパラメーターは必須ですか?どういう意味ですか?
ジェダイ

6

プラグインCron-Viewを使用できます。そこにあなたの仕事がa)登録されているか、b)次の期日が何であるかがわかります。

さらに、より低いスケジュールタイマーをイベントに追加し(2分ごとなど)、ローカルシステムでメソッドをより頻繁にテストできます。「cron_schedules」フィルターフックを使用して、新しいスケジュール時刻を登録します。例えば:

function my_additional_schedules($schedules) {
    // interval in seconds
    $schedules['every2min'] = array('interval' => 2*60, 'display' => 'Every two minutes');
    return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');


3

アクションを作成し、内部でCronアクションを実行することにより、手動でデバッグできます。このような:

add_action( 'init', function() {

    if ( ! isset( $_GET['the_cron_test'] ) ) {
        return;
    }

    error_reporting( 1 );

    do_action( 'this_is_cron_event_hook' );

    die();

} );

そして、あなたのウェブサイトのアドレスに行くことにより: http://example.com?the_cron_test

これにより、cronタスクのエラーが表示されます。

しかし、それを手動で行う意味はありません。これを行うAdvanced Cron Manager PROプラグインを使用でき、ログやその他の統計も保存できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.