HUSKY - Products Filter Professional for WooCommerce

Турбо-режим: Чому автоматичні оновлення cron не вдаються (і як це виправити)

Проблема

Користувачі повідомляють, що WOOF Турбо-режим автоматичне перегенерування файлів не працює надійно:

Симптоми:

  • Турбо-режим увімкнено з розкладом "Щоденний крон"
  • завдання cron WordPress woof_turbo_do_recreate_file не створюється
  • Ручне створення файлів працює ідеально
  • Автоматичні оновлення генерують часткові/порожні файли
  • Регенерація файлів, здається, ніколи не завершується

Вплив:

  • Застарілі підрахунки фільтрів, показані клієнтам
  • Поганий користувацький досвід (бачити продукти, яких не існує)
  • Потрібне ручне втручання щодня

Чому це відбувається: дві основні причини

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:00 – 18:00). Ви плануєте турбо-регенерацію на 3:00 ночі. Результат: Він ніколи не запускається тому що ніхто не відвідує о 3 ранку, щоб запустити wp-cron.php.

Надійне рішення: Серверний Cron

Замініть cron WordPress на реальний серверний 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: Додайте запис Cron сервера

Варіант А: Використання PHP CLI (Рекомендовано)

# 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

Підсумок

Основні причини збоїв турбо-хрону:

  1. WordPress cron ненадійний (залежить від трафіку)
  2. Ліміти часу виконання PHP вбивають довготривалі завдання

 

Рекомендоване виправлення:

  1. ✅ Вимкнути WP_CRON
  2. ✅ Використовувати серверний cron
  3. ✅ Збільшити ліміти PHP
  4. ✅ Плануйте під час годин низького трафіку

Результат: Надійна, автоматична регенерація файлів турбо з точними підрахунками продуктів для ваших клієнтів.

Посилання: https://pluginus.net/support/topic/woof_turbo_do_recreate_file-cron-job-is-missing/