web-dev-qa-db-ja.com

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

WordPress Cronの問題をデバッグするにはどうすればいいですか?私はそれがユーザーがあなたのサイトに行くときに引き起こされると思いますが、どんなエラーも彼らに見せられないでしょう、仕事が「非同期的に」実行されるので。では、どうすればエラーをデバッグできますか?

wp schedule event を使います

23
Jiew Meng

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

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

define('DISABLE_WP_CRON', true);

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

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

28
gabrielk

プラグイン 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');
6
rofflox

すべてのエラーを記録するために PHP error log を設定することができます。

3
Rarst

アクションを作成して内部で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 pluginを使うこともできます。これはあなたに代わってこれを行い、ログや他の統計も保存します。

2
WPMaster