2018年07月15日WordPressでWEBサイトを構築する場合、サーバーの負荷を軽減するために「wp-cron.phpの自動実行を停止」することがあります。このページでは、wp-cron.phpの停止及びサーバーのCRONでwp-cron.phpが定期的に実行されるようにする設定の手順を解説します。「wp-cron.php」は、サーバーのCRON(プログラムを自動実行させる機能)に頼らずにWordPressでCRON的なものを用意し、記事の予約投稿などの自動実行させたいものを自動で実行させられるようにするためのプログラムです(ファイルはWordPressをインストールしたディレクトリ...wp-adminディレクトリがあるところと同じ階層にあるはずです)。いえ、サーバーのCRONに頼らずに完全にCRONと同様の機能を果たせるわけではありません。通常は(管理画面を含めて)WEBサイトへのアクセスが有った時にwp-cron.phpが実行され、実行予定時刻を過ぎていてなおかつまだ実行されていない処理(記事の予約投稿など)が実行されるようになっています。このシステムでは、WEBサイトへのアクセスが少ない場合はwp-cron.phpが実行される回数も少ないので自動実行させたい処理が予定通りには実行されにくいです。WEBサイトへのアクセスが増えてきてもwp-cron.phpは律儀に毎回実行されるので、この場合は必要以上にwp-cron.phpが実行され、サーバーに余計な負荷がかかることになります。そこで、wp-cron.phpのWEBサイトへアクセスが有ったときの自動実行を停止し、代わりにサーバーのCRONを使ってwp-cron.phpを定期的に実行させるようにしてサーバー負荷の軽減を図ることがあるのです。wp-cron.phpの自動実行を停止するwp-cron.phpのWEBサイトへアクセスが有ったときの自動実行を停止するのは非常に簡単です。wp-config.phpに以下の1行を追記すればOKです。後ろあたりで良いと思います。wp-cron.phpの自動実行を停止することでサーバーの負荷を軽減することはできますが、この操作を行うことでWP-Cronに依存する処理(記事の自動投稿など)が停止してしまうので、サーバーのCRONを使用して定期的(1~2時間に1回程度、必要ならサーバーリソースの許す範囲で更に高頻度にしても良い)にwp-cron.phpを実行する必要があります。サーバーのCRONでwp-cron.phpを定期的に実行する以下の設定は、サーバーのCRON設定を自分で行えることを前提としています。wp-cron.phpを実行するユーザーの設定にも注意が必要となります。ユーザーの場合は以下の内容の設定手順をこちらで解説していますPHPで直接wp-cron.phpを実行する(ユーザー設定に要注意)PHPで直接wp-cron.phpを実行する設定の手順を解説します。この方法を取る場合は、wp-cron.phpを実行するユーザーの設定には特に注意が必要です。(CentOS7+)Apacheを使用している場合は、PHPをモジュールモードで利用している場合は「apache」(Apacheの実行ユーザー)PHPをCGIモードで利用している場合はwp-cron.phpファイル(WordPress関連のファイル)の所有者を実行ユーザーに設定することになるでしょう。CentOS7の場合、設定は以下のようになります(wp-cron.phpファイルの所有者をhogeとします)。CRONの設定方法の詳細はこちらモジュールモードの場合はこのようになります。実行間隔とwp-cron.phpファイルのパスは各自の環境に合わせてください。[/VIM]CGIモードの場合はこのようになります。実行間隔とユーザー名、wp-cron.phpファイルのパスは各自の環境に合わせてください。[/VIM]なお、複数のWEBサイトでWordPressを利用しているなどの場合は、wp-cron.phpファイルを実行するコマンドをシェルスクリプトにまとめ、それをCRONで実行しても良いです。→このブログを応援する・寄付する当ブログでは暗号通貨による寄付を募っております。