管理しているサーバーがアホみたいにエラーログを吐いていた。
MySQL server has gone away for query UPDATE `wp_options` SET `option_value` = ‘a:4:{i:1440638520;a:1:{s:20:\\”wp_maybe_auto_update\\”;a:1:{s:32:\\”40cd750bba9870f18aada2478b24840a\\”;
…
略
wp_optionsテーブルのcronのデータのupdateのsqlが長すぎてエラー。
原因不明すぎたけど
とりあえずクーロン関係なので
「cron view」っていうプラグイン入れてジョブを確認すると
Next due が「(wp_batch_split_terms)」で
Hookが「1440751547(例)」っていうタイムスタンプ値が登録されてる
v4.3からできた
/wp-includes/taxonomy.php
の
4446行目〜の _wp_check_for_scheduled_split_terms() が原因と思われた。
その下に
! wp_next_scheduled( ‘wp_batch_split_terms’ )
って書いてあるけどHookがタイムスタンプなので永遠にフックが登録され
ジョブが増えまくってsqlが超ロングになりエラーっていうことだと思われ。
で解決方法はその下で
//wp_schedule_single_event( 'wp_batch_split_terms', time() + MINUTE_IN_SECONDS ); wp_schedule_single_event( time() + MINUTE_IN_SECONDS, 'wp_batch_split_terms' );
といったように引数を入れ替えれば直る。
こんなバグをやってくれるとかたまらん。
これで無限ジョブ登録はとまるので
あとはできてしまったジョブを
wp_clear_scheduled_hook($hook);
でこつこつ消せば平和になる。
ちなみに私は1万以上のジョブを消すはめになった。
functions.phpで
remove_action('admin_init', '_wp_check_for_scheduled_split_terms');
でremoveしてもいいみたい。そもそもこいつなんで必要かわからんけども。
追記:
v4.3.1で解消されたもよう