HUSKY - Product Filter for WooCommerce

HUSKY Turbo Mode: Otomatik Cron Güncellemeleri Neden Başarısız Olur (ve Nasıl Düzeltilir)

Sorun

Kullanıcılar, WOOF’un Turbo Modu otomatik dosya yenilemesinin güvenilir şekilde çalışmadığını bildiriyor:

Belirtiler:

  • Turbo modu ”Günlük cron” zamanlaması ile etkinleştirildi
  • WordPress cron işi woof_turbo_do_recreate_file oluşturulmuyor
  • Manuel dosya oluşturma mükemmel çalışıyor
  • Otomatik güncellemeler kısmi/boş dosyalar oluşturuyor
  • Dosya yenileme hiçbir zaman tamamlanmıyor gibi görünüyor

Etki:

  • Müşterilere güncel olmayan filtre sayıları gösteriliyor
  • Kötü kullanıcı deneyimi (var olmayan ürünleri görme)
  • Her gün manuel müdahale gerekiyor

Bu Neden Olur: İki Temel Neden

1. Dosya Temizleme Yarış Koşulu

WOOF turbo dosyasını yenilediğinde şu işlemi izler:

// 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);
}

Sorun:
Sitenizde çok sayıda ürün varsa (1000+), Adım 2 60-120 saniye sürebilir. PHP’nin max_execution_time (genellikle 30-60 saniye) aşılırsa, komut dosyası yazma ortasında sonlandırılır ve dosya boş veya kısmi kalır.

2. WordPress Cron Gerçek Cron Değil

WordPress cron (wp-cron.php) kritik sınırlamalara sahiptir:

Çalışması garanti edilmez – yalnızca sitenizi ziyaret eden biri olduğunda tetiklenir
Engellenebilir – önbellek eklentileri çalışmayı engelleyebilir
Uzun süren görevler yok – PHP yürütme sınırları tarafından sonlandırılır
Güvenilmez zamanlama – geç çalışabilir veya hiç çalışmayabilir

Gerçek dünya senaryosu:
Siteniz en çok iş saatlerinde (09:00 – 18:00) trafik alır. Turbo yenilemeyi sabah 3’e planladınız. Sonuç: Asla çalışmaz çünkü wp-cron.php’yi tetiklemek için sabah 3’te kimse ziyaret etmez.

Güvenilir Çözüm: Sunucu Tarafı Cron

WordPress cron’u, site trafiğinden bağımsız çalışan gerçek sunucu cron’u ile değiştirin.

Adım 1: WordPress Cron’u Devre Dışı Bırakın

wp-config.php dosyasına ekleyin (/* That's all, stop editing! */ öncesine):

/**
 * Disable WordPress cron - we'll use server cron instead
 */
define('DISABLE_WP_CRON', true);

Adım 2: Sunucu Crontab Girişi Ekleyin

Seçenek A: PHP CLI Kullanma (Önerilen)

# 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

Seçenek B: wget Kullanma

# Add this line to crontab
0 3 * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Seçenek C: curl Kullanma

# 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 kısmını gerçek WordPress kurulum yolunuzla değiştirin.

Adım 3: PHP Yürütme Sınırlarını Artırın

wp-config.php dosyasına ekleyin:

/**
 * Increase limits for cron tasks (turbo file generation)
 */
@ini_set('max_execution_time', 300); // 5 minutes
@ini_set('memory_limit', '512M');    // 512 MB RAM

Veya WordPress kök dizininizde .user.ini dosyası oluşturun:

max_execution_time = 300
memory_limit = 512M

Özet

Turbo cron başarısızlıklarının temel nedenleri:

  1. WordPress cron güvenilmezdir (trafiğe bağımlı)
  2. PHP yürütme süresi sınırları uzun süren görevleri sonlandırır

 

Önerilen düzeltme:

  1. ✅ WP_CRON’u devre dışı bırakın
  2. ✅ Sunucu tarafı cron kullanın
  3. ✅ PHP sınırlarını artırın
  4. ✅ Düşük trafik saatlerinde zamanlayın

Sonuç: Müşterileriniz için doğru ürün sayılarıyla güvenilir, otomatik turbo dosya yenileme.

Ref: https://pluginus.net/support/topic/woof_turbo_do_recreate_file-cron-job-is-missing/