ワードプレスのサイトヘルスに「予約したイベントが遅れています」という表示が出ていました。
内容を確認すると、
こんなことが書かれていました。
予約したイベント action_scheduler_run_queue の実行が遅延しています。サイトは動作しますが、予約した投稿や自動更新は正しく動作しないかもしれません。
とのことでした。
この「action_scheduler_run_queue」とは何なのでしょう。
これはどうやら使用しているプラグインが原因のようです。
いくつかワードプレスでサイトを構築していますが、この表示があるサイトにだけ使っているのが「Booking Package」というカレンダー&予約プラグイン。
プラグインの種類からしても、なんとなーく「スケジュール」に関係しそうですね^^;
それから、「WP-Optimize」。
どうやら、例えば
- バックアップを定期的に自動で取るプラグイン
- クリーニング(最適化)をスケジュールできるプラグイン
など、プラグイン側で何かを自動で動かすような仕様のものを使っていると表示されるようです。
※原因がわかりました。過去に記載した内容の下に追記しておきます。
そして、調べた結果、結局はこのようなサイトヘルス表示は、プラグインの更新を待つしかなさそうです。
メッセージを取り除く手筈は「functions.php」に以下を追加することで改善するそうです。
add_filter('action_scheduler_run_schedule', function($arg) { return 86400; });
ただ、今回はエラー表示を無くす、というのが目的ではなく、そもそもの原因(と思われる)プラグインの対策をしてくれることが目的。
プラグインの更新でこの表示が消えるかどうかも確認したいので、しばらくこのまま様子を見ることにしました。
変化がありましたら、また当ブログでご報告します。
追記:原因がわかりました。
この後もいくつかのサイトでこのような表示が出ました。
やはり、自動で何かをしてくれるスケジューリングができるプラグインを入れると、表示されることがあります。
原因は、「wp-config.php」のパーミッションです。
例えば、ロリポップなら「wp-config.php」のパーミッションは標準で「400」です。
これはセキュリティ強化のためにそのような仕様になっていますので、サイトヘルスで「予約したイベントが遅れています」と出ている人は、ワードプレスをインストールしたルートフォルダ内にある「wp-config.php」のパーミッションを一度確認してみてください。
もし、「400」になっている人は「600」あたりにしてみてください。
訂正します。600にしてもしばらく経つと同じ現象が出る、という報告を受け、わたくしの環境でも確認いたしました。そこから検証したところ、パーミッションのグループに「読み込み権限」を与えないとダメっぽいです。※もしかしたら出たり出なかったりするかも・・?
つまり、640です。
セキュリティを弱めることになってしまうのですが、All In One WP Securityなどでのプラグインでは「640」を推奨しているので、(公式は600を推奨しているけど)640で良しと判断しています。
この辺は、プラグインの動作を優先するか(サイトヘルスの改善を優先)、セキュリティを優先するか、の判断になりそうですが、前者ならばパーミッション640で解決ができそうです。
しかし、プラグインの動作に問題はないのであれば、サイトヘルスのアナウンスを無視して、400、600で使い続けるのも手です。もしかしたらワードプレス自体の更新やプラグインの更新などでアナウンスが消える可能性もあります。
おそらく、「書き込み 訂正)読み込みができないことで動かせないかもしれない」というアナウンスであったと推測します。
コメント
パーミッションを、600 にして、しばらく様子をみておりましたが、該当のアナウンス表示がまた出ました。
根治してはいないようです。
その後そちらはうまく動作されていますか?
コメントありがとうございます!
当方でも確認できました。
パーミッションのグループに読み込み権限を与えないとダメみたいです。
400→440 もしくは 600→640
セキュリティ的に緩めることになるので、
少々迷うところですが、「All In One WP Security」などの
セキュリティプラグインの推奨パーミションを見ると
「640」になっていたので良しとしようかな、、と思っています。
どうでしょうか?