wp-cron.phpを軽くする方法|外部Cron化で高速&安定運用

WordPress の自動実行処理は wp-cron.php によって管理されています。
しかし、標準の wp-cron.php は仕組み上「遅い・重い・実行タイミングが不正確」という問題を抱えています。

この記事では、wp-cron.php の特徴と欠点、正しい最適化方法、さらに サーバー側のリアルCron(本物のcron)との比較まで徹底解説します。

1 wp-cron.php とは?

WordPress の内部タスク(スケジュール実行)を担当する疑似 Cron システムです。例えば次のような処理を実行します。

  • 予約投稿の実行
  • プラグインの定期処理(キャッシュ削除など)
  • バックグラウンドでのデータ処理
  • cron系プラグインのスケジュール処理

つまり、WordPressの「自動化機能」はすべて wp-cron.php が支えています。

2 wp-cron.php の仕組み(ここが問題)

WordPress は「ユーザーがページを訪れたタイミングで」cronを実行します。

つまり…

  • アクセスが多い → 頻繁に実行されすぎて重い
  • アクセスが少ない → cronが実行されず、予約投稿が遅れる

これが WordPress の速度低下や不具合の原因になります。

3 wp-cron.php のデメリット

  • アクセスの数だけ起動される(負荷が高い)
  • CPU が spike しやすい
  • アクセスがゼロだと実行されない(予約投稿が遅延)
  • 大規模サイトでは admin-ajax.php を呼び出して遅くなる
  • cronの実行間隔が不正確

これを解消する最も効果的な方法が、リアルCronへの置き換えです。

4 リアルCronとは?(本物のCron)

サーバーが備えている「システム側の Cron(crontab)」のことです。
Linuxサーバーで非常に正確にスケジュール処理を実行できます。

4.1 リアルCronのメリット

  • アクセスとは無関係に正確に動作
  • 負荷がほぼゼロ(WordPressよりはるかに軽い)
  • 予約投稿が遅れない
  • 大規模サイトでも安定

4.2 リアルCronのデメリット

  • サーバー設定が必要(初心者は少し大変)
  • cron間隔を自分で決める必要がある

5 wp-cron.php の正しい最適化手順(結論)

WordPress高速化の専門家の多くが推奨しているのは、

① wp-cron を無効化 → ② サーバー側でリアルCronを設定する

この2ステップです。

6 ① wp-cron.php を無効化する(最重要)

まずは wp-config.php に以下を追加します。


// WordPress 標準の wp-cron を無効化
define('DISABLE_WP_CRON', true);

これでアクセス毎の wp-cron 実行が完全に止まり、サイトの負荷が大幅に減ります。

7 ② サーバー側のCronを設定する(本物のCron)

次に、サーバーのスケジュールタスクから以下を設定します。

7.1 実行するURL(WordPress公式推奨)

wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

example.com をあなたのサイトURLに変更

7.2 推奨実行間隔

サイト規模 推奨間隔
小規模ブログ 10〜15 分
中規模サイト 5 分
大規模サイト 1〜3 分

予約投稿やキャッシュ削除などが正常に動くレベルで十分です。

8 wp-cron と リアルCron の比較まとめ

項目 wp-cron リアルCron
実行タイミング アクセスに依存 正確なスケジュール
負荷 高い(アクセスの度に実行) 非常に低い
予約投稿の正確性 遅延しやすい 遅延ゼロ
大規模サイト向け 不向き 最適
設定の簡易性 超簡単(自動) サーバー設定が必要

9 wp-cron.php の暴走を見つける方法

以下の症状がある場合、wp-cron が暴走している可能性が高いです。

  • admin-ajax.php のアクセスが異常に多い
  • CPU 使用率が急上昇
  • WordPress が急に重くなる
  • ログに大量の cron イベントが残る

この場合は、迷わず wp-cron無効化+リアルCron導入 を推奨します。

10 wp-cron 最適化のベストプラクティス

  1. wp-config.php で wp-cron を無効化
  2. サーバー側で 5〜15分間隔のリアルCron設定
  3. 不要な cron イベントを削除
  4. cronを多用するプラグインを整理

11 まとめ:wp-cron 最適化は “高速化で最も効果的”

wp-cron をリアルCronに置き換えるだけで、
管理画面の速度・フロントの速度・サーバー負荷が大幅に改善します。

特に、以下のようなサイトはほぼ必須です。

  • アクセスが多い
  • 予約投稿が遅れることがある
  • CPU使用率が多いとよく言われる
  • 高速化を本気でやりたい

wp-cron.php の最適化は、WordPressの高速化で最も効果が大きいチューニングのひとつです。