

Wordpressで記事投稿直後にバックグラウンドで処理を行いたいのですが、  
どうやら wp_schedule_single_event がきちんとトリガーされていないようです。  
以下のコードのどこが間違っているか、ご指摘頂ければ幸いです！

[code]

    // functions.php
    
    add_action('save_post', 'registerMyCron');
    
    function registerMyCron(){
      wp_schedule_single_event(time(), 'myCronAction');
    }
    
    add_action('myCronAction', 'doSomething');
    
    function doSomething(){
      // 何らかの処理...
    }
    
[/code]


CC BY-SA 3.0
2017-02-16T03:29:56.030
32704
2019-06-28T04:05:40.637
2017-02-18T08:28:24.897
9092
9092
question
php wordpress
Wordpress 記事投稿直後にバックグラウンドで処理を行いたい(並列処理？)


WordPress Codex では
[`wp_schedule_single_event()`](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_schedule_single_event)
について次のように書かれています。

> 指定した時刻に WordPress のコア機能によって一度だけ実行されるフック（アクション）を登録します。そのアクションは誰かが WordPress
> サイトを訪れたときに予定した時刻を過ぎていれば実行されます。

ですから、現在時刻+n秒と指定したところでその時間に実行される保証はないですし、現在時刻を指定したらすぐさま実行されるわけではありません。

`spawn_cron()` 関数を呼ぶことですぐにスケジュールの確認と実行が行われるようなので、これを呼び出すと直ちに実行できるのではないでしょうか。

[code]

    function registerMyCron(){
      wp_schedule_single_event(time(), 'myCronAction');
      spawn_cron();
    }
    
[/code]

私自身はWordPressに詳しくないので、この方法が適切なのかどうかはわかりませんが…。

参考 [WordPressプラグインの重い処理をバックグランドで非同期に実行する方法 |
ゆっくりと…](http://tokkono.cute.coocan.jp/blog/slow/index.php/wordpress/wordpress-
background-cron/)


CC BY-SA 3.0
2017-02-18T11:32:51.650
32772
2017-02-18T11:32:51.650
8000
32704
answer