WordPress Cron (WP-Cron) ve Gerçek Cron (Zamanlanmış İşler)

Cron Unix, Linux sistemlerinde kullanılan bir görev zamanlayıcısıdır. Cron kullanarak bilgisayarlarda belirli periyotlarda, belirlediğiniz komutların çalıştırılmasını sağlayabilirsiniz.

Bu özellik sayesinde örnek olarak sisteme hergün 04:00’te yedek almasını, belirli bir adrese eposta göndermesini, taslak olarak kaydettiğiniz blog yazısının yayınlanmasını yada her Çarşamba 16:00’da bir dosyanın silinmesini ve fatura kesilmesini vs gibi işleri otomatik yapmasını sağlayabilirsiniz. Linux için çok yaygın kullanılan cPanel sunucu yönetim yazılımı altında bulunan Cron Jobs sekmesinden görsel olarak çok hızlı ve basit şekilde Zamanlanmış İşlerinizi ayarlayabilirsiniz.

WordPress’te ileri bir tarihe ayarlanmış yazılarınızın planladığınız zamanda yayınlanmadığını fark ettiniz mi? Cron’la aynı mantıkta WordPress’te belirli zamanlarda belirli işlerin otomatik olarak yapılmasını tetikleyecek bir fonksiyona sahiptir.  WP-Cron olarak adlandırılan bu özellik aslında Linux Cron işlevinin sanal bir taklididir. Çünkü Linux Cron fonksiyonu işletim sistemindeki saati kullanarak gerçek zamanlı işlemler gerçekleştirebilir. Wp-Cron ise siteye bir ziyaretçi uğradığında çalışan fonksiyonlar zinciri arasındadır. Yani sitenizi kimse ziyaret etmiyorsa WP-Cron ile zamanladığınız işler zamanında yapılmıyor demektir. Belki dakikalar hatta saatler sonra bile tetiklenebilir. Bu ve benzeri sorunların en bilinen bazıları aşağıdaki gibi özetlenebilir.

  • Eklenti Çakışmaları
  • DNS’le Alakalı Sorunlar
  • WordPress Sürüm Hataları
  • Cache Eklentisi Kullanımı
  • Yüksek Sunucu Yükü

Bütün bunlardan kurtulmak ve dakika hassasiyetinde zamanlanmış işlerinizin gerçekleşmesini istiyorsanız gerçek Cron kullanmanız gerekmektedir. Bunun için öncelikle WordPress Cron fonksiyonunu devreden çıkarıyoruz. wp-config.php dosyasını açıyoruz ve

define('DB_COLLATE', '');

satırının altına

define('DISABLE_WP_CRON', 'true');

satırını ekliyoruz.

/** Veritabanı karşılaştırma tipi. Herhangi bir şüpheniz varsa bu değeri değiştirmeyin. */
define('DB_COLLATE', '');
define('DISABLE_WP_CRON', 'true');

 

Daha sonra cPanel yönetim panelimizde CronJobs bölümüne geliyoruz.

cronjob-nedir

Command bölümüne aşağıdaki kodu ekliyoruz.

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

Burada wget fonksiyonu ile az önce WordPress üzerinde iptal ettiğimiz  Cron fonksiyonunu artık sunucu bazlı çalıştırıyoruz. Kısaca kodu açıklayalım.

-q (quiet) yani sessiz çalışma, wget fonksiyonu çıktılarını kapatır.

-O (output document) çıktı dosyasının “file” olarak tek bir dosyaya sürekli üzerine yazılarak yenilenmesini sağlar.

/dev/null (stdout) standart çıktıyı uzay boşluğuna gönderir, çalıştırmaz. Bu durumda Cron her çalıştığında normalde sistem yöneticisine eposta gönderir /dev/null sayesinde bu eposta gönderilmez.

2>&1 standart error (2) hata çıktılarını standart output (1) çıktılarına yönlendirir. Biz zaten standart output çıktılarını uzay boşluğuna gönderdiğimiz için hata çıktılarını da almayız.

Kısacası zamanlanmış görevin sessiz ve kimseye karışmadan çalışmasını sağlamış oluyoruz.

Bunların dışında dakika,saat,gün,ay ve hafta değerlerini ihtiyacımıza göre düzenleyebiliriz. Bu bölümde biraz kafa karıştırıcı olduğu için detaylı yazalım.

[su_service title=”Hızlı Ayarlar” icon=”icon: gear”]Hızlı işlemler için ortak ayarları seçebiliriz[/su_service]

[su_service title=”Dakika Ayarı (0-59)” icon=”icon: gear”]işlemin her dakika olmasını istiyorsak * koymalıyız.
işlemin her 10 dakikada bir olmasını istiyorsak */10 yapmalıyız.
işlemin her 30 dakikada bir olmasını istiyorsak */30 yapmalıyız.[/su_service]

[su_service title=”Saat Ayarı(0-23)” icon=”icon: gear”]işlemin her Saat olmasını istiyorsak * koymalıyız.
işlemin saat 2′de bir olmasını istiyorsak 2 yapmalıyız.
işlemin her 12 saatte bir olmasını istiyorsak */12 yapmalıyız.[/su_service]

[su_service title=”Gün Ayarı(0-31)” icon=”icon: gear”]işlemin ayın her günü olmasını istiyorsak * koymalıyız.
işlemin ayın her 10’nunda olmasını istiyorsak 10 yapmalıyız.
işlemin ayın her 10′u ile 20′sinde olmasını istiyorsak 10,20 yapmalıyız.[/su_service]

[su_service title=”Ay Ayarı(1-12)” icon=”icon: gear”]işlemin her ay olmasını istiyorsak * koymalıyız.
işlemin her 3 ayda bir olmasını istiyorsak */3 yapmalıyız.
işlemin 4 ve 12 ayda olmasını istiyorsak 4,12 yapmalıyız. ( Nisan ve Aralık )[/su_service]

[su_service title=”Hafta Ayarı(0-6)” icon=”icon: gear”]işlemin Haftanın her günü olmasını istiyorsak * koymalıyız.
işlemin Haftanın her 3. gününde bir olmasını istiyorsak */3 yapmalıyız. ( Çarşamba)
işlemin haftanın ilk ve 5 günlerinde olmasını istiyorsak 0,5 yapmalıyız. (Pazar ve Cuma )[/su_service]

 

WordPress Cron (WP-Cron) ve Gerçek Cron (Zamanlanmış İşler)” hakkında 3 yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir