wordpress WordPress の wp-cron.php を無効にする

2013年9月15日

サーバーのログを確認したところ「/wp-cron.php?doing_wp_cron=1234565789..」というようなアクセスがあったので wp-cron.php について調べた際のメモ。

WordPress にも cron のような機能があり、 予約投稿や、テーマのアップデート、E-mail の通知、スケジューリング機能を持つ一部のプラグインなどが wp-cron.php を使っている。

  • デフォルトでは WordPress はサイトへアクセスがある(ページが読み込まれる)たびに wp-cron.php を呼び出す。
  • このためリソースが無駄に使用され、アクセスの少ないサイトでは問題ないが、アクセスが多いサイトの場合はパフォーマンスの低下など、問題が発生する可能性がある。
  • また、逆にアクセスの少ないサイトでは wp-cron.php を使ったスケジューリング機能を持つプラグインは期待した時刻に起動しない可能性があるかも知れない。

wp-cron.php を無効にする

wp-cron.php を無効にすると、それに依存する予約投稿やE-mail の通知、スケジューリング機能を持つプラグインなどが起動しなくなるので、それらが不要な場合を除き、マニュアルで cron ジョブを設定するなど何らかの対策が必要になります。

wp-cron.php を無効にするには wp-config.php のデータベースの設定の後(define(‘DB_COLLATE’, ”)の後:38行目あたり)に以下を記述する。

define('DISABLE_WP_CRON', 'true');

これで WordPress はサイトへのアクセスがあるたびに wp-cron.php を実行しなくなる。但し、全く実行されなくなると問題があるので、cPanel などを使ってマニュアルで cron ジョブを設定する。

マニュアルで wp-cron.php の cron ジョブを設定する

以下は cPnael を使って6時間おきに wp-cron.php を呼び出す方法。

cPanel にログインして「Advanced」セクションの「Cron Jobs」をクリック

cron-1

「Add New Cron Job」セクションの「Common Settings」のドロップダウンから「Once an hour」を選択

cron-2

「Hour」のドロップダウンから「Every 6 hours」を選択(6時間おきの場合。頻度は環境に合わせて変更する。)

cron-3

「Command」に以下のコードを入力して「Add New Cron Job」をクリック

cd /home/userna5/public_html; php -q wp-cron.php

上記のパス /home/userna5/public_html は WordPress が(プライマリードメインの)ルートにインストールされている場合で、アドオン・ドメインやサブディレクトリなどにインストールしてある場合は、それに合わせてパスの部分を変更する必要がある。また「userna5」はユーザー名。

cron-4

問題がなければ cron ジョブが設定され、「Current Cron Jobs」のリストに表示される。

cron-5

追加情報 2013年9月16日

「UpdraftPlus」というバックアップ用のプラグインでは上記の「6時間おきの wp-cron.php を呼び出し」では不十分でした。このプラグインの設定ページには以下のような警告が表示されていたのでそのリンクを見たところ、”but note that it is then your responsibility to make sure that the scheduler is called frequently enough to process all the jobs scheduled on your site” とあり、それなりの回数の呼び出しが必要なようで、ある特定の時間に5分おきに cron ジョブを呼び出すようにしています。

警告: The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even “Backup Now”) unless either you have set up a facility to call the scheduler manually, or until it is enabled. 詳細はこちら

追加情報2013年9月24日
上記の設定で「UpdraftPlus」を使用していたところバグ(?)が発生しました。詳細は「UpdraftPlus のバグ?」を参照。