結果確認wp-cron.phpへのリクエスト数が半端ないWordPressは特定の時間になったら特定の処理を行うというタイマー的な機能を実装するにあたって、WP-CRONという仕組みを用意しています。これは通常WordPress上のいずれかのページへアクセスがあると、それと平行してwp-cron.phpへも同時にアクセスが発生し、その際に実行すべき処理があれば起動するというものです。ユーザーが1回アクセスすると必ず最低でも2回のアクセスが走ってしまう。実際にアクセスログをざっくり集計すると、リクエストの27.5%程度がこのwp-cron.phpでした。-l22678このブログはフロントにCDN(CloudFront)を置いているので、オリジンであるWordPressサーバには最小限のリクエストしか来ないのですが、拡張子に.phpが含まれる物はキャッシュ時間をゼロにして素通りさせている関係上、こいつだけはPV数分やってくるというわけです。そんなに上等なサーバ使ってないのでバズると死ぬwというわけで、今回はwp-cron.phpへのアクセスを停止し、1分間に1回サーバ内部でWP-CRONを実行する設定をします。開き、適当な場所に以下のdefine行を追加します。true);ちなみに設定する値はfalseにならなければ何でも大丈夫です。具体的には以下の関数でWP-CRONを実行するか判定しているのですが、このif文がtrueになれば問題ありません。return;これでwp-cron.phpへのリクエストは止まったはずです。cronからWP-CRONを起動するこのままだとバックアップ用のプラグインや、時間指定した記事が表示されなくなるっぽいのでWP-Cronを別の方法で動かしてやります。LinuxなどUNIX系OSに搭載されているスケジューラであるcronの設定をしてWP-Cronを起動しようと思うのですが、ここではコマンドラインからWordPressを操作できるWP-CLIを利用したいと思います。WP-CLIのインストール公式サイトの内容に沿ってインストールします。/usr/local/bin/wp動作確認をするのですが、カレントディレクトリをWordPressをインストールしたディレクトリに移動しておくか、インストール先のパスを指定する必要があります。WP-CLIはwpという名前のコマンドで叩くのが一般的です。--infoオプションで環境情報が表示されます。2.1.0ちなみにパスを指定する場合は以下です。--path=/web/wordpresscronから実行するシェルスクリプトの準備cronから直接wpコマンドを叩いても良いのですが、今回はシェルスクリプトを1枚挟みます。--path=$WP_ROOT実行権の付与を忘れずに。先ほど作成したシェルスクリプトをcronに登録します。一般ユーザーで大丈夫です。以下のようにすると1分置きに実行してくれます。/home/katsube/cron/wpcron.shcronが起動しているか確認/var/log/cronに記録されていますので、tailなどでのぞいて確認します。(/home/katsube/cron/wpcron.sh)なお、このファイルは起動したかどうかしか記録されていませんので、正常に処理が行われたか調べるには出力結果をログなどに記録しておく必要があります。シェルスクリプトに手を入れて現在時間なども出力した方がわかりやすいですね。23,495Amazon.co.jpで詳細を見るコメントコメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。このブログを応援するお寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。PayPalで300円支払う※金額は任意で変更できます。自宅警備がてらゲームのお仕事や講師などしてご飯を食べてます。