ターボモード:自動cronアップデートが失敗する理由(および修正方法)
問題
ユーザーは WOOF の ターボモード 自動ファイル再生成は確実に機能しません。
症状:
- "毎日cron" スケジュールでターボモードを有効にする
- WordPress cron ジョブ
woof_turbo_do_recreate_fileが作成されていません - 手動ファイル生成は完全に機能します
- 自動更新生成 部分的/空のファイル
- ファイルの再生成が完了しないようです
影響:
- 顧客に表示されるフィルターカウントが古い
- ユーザーエクスペリエンスが悪い (存在しない商品が表示される)
- 毎日手動介入が必要です
なぜこれが起こるのか: 2つの根本原因
1. ファイルクリア競合条件
WOOFがターボファイルを再生成する際、このプロセスに従います。
// Step 1: Clear the file
file_put_contents($turbo_file, '');
// Step 2: Write new data (takes time)
foreach ($products as $product) {
// Heavy processing for each product...
file_put_contents($turbo_file, $data, FILE_APPEND);
}
問題:
サイトに多くの商品 (1000+) がある場合、ステップ 2 は 60 ~ 120 秒かかる場合があります。PHP の max_execution_time (通常30〜60秒) を超えると、スクリプトは書き込み途中で終了し、ファイルが残ります 空または部分的.
2. WordPress Cron は実際の Cron ではない
WordPress cron (wp-cron.php) には重大な制限があります:
❌ 実行は保証されません – 誰かがあなたのサイトを訪れたときにのみトリガーされます
❌ ブロックされる可能性があります – キャッシュプラグインが実行を妨げている可能性があります
❌ 長時間実行されるタスクはありません – PHP実行制限により中断されました
❌ 不確かなタイミング – 実行が遅れるか、または全く実行されない可能性があります
実例:
あなたのサイトは主に営業時間(午前9時~午後6時)にトラフィックを得ます。ターボ再生を午前3時にスケジュールします。結果: 全く実行されない 誰も wp-cron.php をトリガーするために午前3時にアクセスしないからです。
信頼性の高いソリューション: サーバーサイド Cron
WordPress cron をに置き換える real server cron サイトのトラフィックとは無関係に実行されます。
ステップ 1: WordPress Cron を無効にする
に追加 wp-config.php (以前 /* That's all, stop editing! */):
/**
* Disable WordPress cron - we'll use server cron instead
*/
define('DISABLE_WP_CRON', true);
ステップ 2: サーバーの crontab エントリを追加する
Option A: Using PHP CLI (Recommended)
# Open crontab editor
crontab -e
# Add this line (runs daily at 3 AM)
0 3 * * * php /var/www/html/yoursite/wp-cron.php >/dev/null 2>&1
オプションB: wgetを使用する
# Add this line to crontab
0 3 * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
オプション C: curl を使用する
# Add this line to crontab
0 3 * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
置き換える /var/www/html/yoursite あなたの実際のWordPressインストールパスで。
ステップ 3: PHP実行制限を増やす
に追加 wp-config.php:
/**
* Increase limits for cron tasks (turbo file generation)
*/
@ini_set('max_execution_time', 300); // 5 minutes
@ini_set('memory_limit', '512M'); // 512 MB RAM
または作成 .user.ini WordPress ルートで:
max_execution_time = 300
memory_limit = 512M
概要
ターボcronの失敗の根本原因:
- WordPressのcronは信頼性が低い(トラフィック依存)
- PHP実行時間制限が長時間実行されるタスクを中断します
推奨される修正:
- ✅ WP_CRON を無効にする
- ✅ サーバーサイド cron を使用する
- ✅ PHP制限を増やす
- ✅ トラフィックの少ない時間帯にスケジュールする
結果: お客様のために、正確な商品数で信頼性の高い自動ターボファイル再生を行います。
参照: https://pluginus.net/support/topic/woof_turbo_do_recreate_file-cron-job-is-missing/