2016-11-17 19 views
2

wp_schedule_single_eventを使用してユーザーアクションでバックグラウンドスクリプトを実行しようとしていますが、イベントがスケジュールされていることが確認されていてwp_cronはスケジュール時間が経過したことを認識しても、イベントハンドラさらに複雑になるために、私のローカルWPインストールでコードはうまく動作しますが、私のサーバーでは何もしません。 wp_cronがスケジュールされているが発射していない

は、私が使用しています、イベントのスケジュールを設定するには、次の

if (! wp_next_scheduled('my_action_name')) { 
    wp_schedule_single_event(time(), 'my_action_name'); 
} 

マイハンドラアクションは次のように定義されます

add_action('my_action_name', 'my_action_handler'); 
function my_action_handler() { 
    // do stuff 
} 

私はWPのコアファイルをテストしていたところ、WPから次のブロック( -includes/cron.php:スクリプトが終了どこ322)は次のとおりです。私のローカルマシン、フィルター上で

var_dump('test1'); 
$cron_request = apply_filters('cron_request', array(
    'url' => add_query_arg('doing_wp_cron', $doing_wp_cron, site_url('wp-cron.php')), 
    'key' => $doing_wp_cron, 
    'args' => array(
     'timeout' => 0.01, 
     'blocking' => false, 
     /** This filter is documented in wp-includes/class-wp-http-streams.php */ 
     'sslverify' => apply_filters('https_local_ssl_verify', false) 
    ) 
), $doing_wp_cron); 
var_dump('test2'); //exit here to test 
wp_remote_post($cron_request['url'], $cron_request['args']); 

'test2'が出力され、スクリプトはwp_remote_postを引き続き呼び出すことができます。ただし、サーバー上では、apply_filter( 'cron_request')の実行中にスクリプトが終了し、 'test1'は出力されますが 'test2'は出力されず、wp_remost_postには到達しません。

さらにこのデバッグ用のフィルタのソースを見つけることができませんでした。 Wordpress.orgはフィルタがwp-includes/cron.phpの中に定義されていると言っています。私がすでに引用した1つのインスタンスは唯一適用されていますが、Sublimeマルチファイル検索を使うと 'cron_request'私が引用したフィルターアプリケーションでのみ表示されます。

私はwp_cronに失敗して多くの投稿を読んでいて、非記述「サーバー設定ブロックwp_cron」の回答以外のヘルプは見つかりませんでした。どのようなタイプのサーバー設定や、その他に何が起こる可能性があるかに関する追加情報はありますか?

+0

を使用することができますか? –

答えて

-2

このアクションは、スケジュールされた時間が経過した場合に、ワードプレスサイトにアクセスしたときにトリガーされます。

たぶん、あなたはあなたのリモートサーバが手がかりを与える可能性がログにすべてのエラーを作成している

wp_schedule_event() 

代わり

wp_schedule_single_event() 
関連する問題