投稿

4月, 2026の投稿を表示しています

WordPress WP-Cron(疑似Cron)の仕組みと問題点

WordPress標準のWP-Cron(疑似Cron)からOSのCronに切り替えようとしているときの覚書。 Gemini 3 Flash Previewと対話。 環境: FreeBSD 14.3-RELEASE-p8, WordPress 6.9.4 参考記事 WP-Cron(wp-cron.php)を無効にしてパフォーマンスを改善する方法| Kinsta Optimization – Advanced Administration Handbook | Developer.WordPress.org WordPress 擬似Cron(WP-Cron)が実装された背景 WordPressが擬似Cronを採用した最大の理由は、サーバー環境に依存せず、PHPだけで完結させるため。 ホスティング環境の制約 : 世界中の多種多様な共有サーバー(安価なレンタルサーバーなど)では、ユーザーがOSレベルの crontab を設定できないケースが多々ある。 ゼロ構成での動作 : インストールした瞬間に、予約投稿やアップデート確認などのバックグラウンドタスクが動作し始める必要。 ポータビリティ : サーバーの仕様を知らなくても、WordPressというアプリケーションのレイヤーだけで完結するスケジュール機構が求められた。 WordPress 擬似Cron(WP-Cron)の仕組み WP-Cronは、バHTTPリクエストをトリガーとしたイベント駆動型で動作。 擬似Cronの処理手順 リクエストの受信 : ユーザーがサイトのいずれかのページにアクセス。 実行判定 : WordPressの初期化プロセス(initフック等)の中で、前回の実行時刻を確認し、「実行すべきタスクがあるか」をDB(wp_optionsテーブル)に問い合わせる。 非同期実行(ループバック) : 実行すべきタスクがある場合、WordPressは自分自身に対してループバックHTTPリクエスト(wp-cron.phpへのPOST)を発行。 タスク処理 : wp-cron.php が独立したPHPプロセスとして起動し、予約されたタスクを順次実行。 WordPress 擬似Cron(WP-Cron)の構造的な問題点 技術的負債 オーバーヘッドとDB負荷: あらゆるページビュー(PV)のたびに、DBへの「タスク確認用S...