WordPress Cron Nasıl Çalışır?

Yayınlanan: 2021-12-03

WP-Cron'un ne olduğunu hiç merak ettiniz mi? Öyleyse, bu, WordPress zamanlanmış görevleri hakkında bilmeniz gereken her şeyi öğrenmeniz için mükemmel bir makaledir.

Cron (Command Run On), UNIX sistemlerinde başlatılan ve daha sonra zamana dayalı bir iş planlayıcı olarak önerilen LINUX dağıtımlarında geliştirilen bir yardımcı programdır.

Bir cron işi, tekrar tekrar veya bir kerelik bir görev olarak gerçekleştirilen bir görevdir. Yıllar boyunca çoğunlukla görevleri otomatik olarak çalıştırmak için bir sistem yönetim aracı olarak kullanılmıştır.

WordPress Kronu

Bir WordPress web sitesini çalıştırırken, temaların ve eklentilerin güncellemelerini, planlanmış gönderileri, silinecek geçici olayları ve daha fazlasını kontrol etmek gibi periyodik olarak yürütülmesi gereken bazı görevler arka planda gerçekleştirilir. Bu zamana dayalı zamanlanmış görevler WP-Cron tarafından gerçekleştirilir.

WordPress kurulumunuzda cron işleri ile ilgili dosya kurulumunuzun kök klasöründe bulunan wp-cron.php dosyasıdır.

wp-cron.php dosyası, güncellemeler ve gönderilerle ilgili otomatik görevlerin kodunu içerir.

Nasıl çalışır

WP-Cron, her sayfa yüklemesinde görev listesini kontrol eder ve buna göre yürütür.

Sayfa yüklendiği an, bir görev zamanı gelmişse, bir kuyruğa eklenir. Bu şekilde WordPress, son olayların bile tetiklenmesini ve atlanmamasını sağlar ve sonunda tüm görevler o sayfa yüklemesinde yürütülür.

Bu size mantıksız geliyorsa doğaldır, ancak alternatifi düşünün. Paylaşımlı bir barındırma ortamında, çoğunlukta olduğu gibi, bu görevleri uygun gördüğünüz şekilde kontrol etmek için sunucu komutlarına erişiminiz olmalıdır, ancak bu sunucu için riskli olmaz mı?

Bu durumda, WordPress'in bu durumda bir geçici çözüm olarak ne yaptığını düşünün. Ancak, bunun bir süre sonra inceleyeceğimiz bazı dezavantajları var.

WP-Crontrol Eklentisi

WordPress web sitenizdeki cron işlerinin listesini görüntülemenin harika ve kolay bir yolu, WP-Crontrol eklentisini yüklemektir.

Etkinleştirdikten sonra, Araçlar->Cron Olayları menü öğesi altında eklentinin yönetici sayfasını görüntüleyebilirsiniz. Bir vanilya kurulumunda şöyle bir şey göreceksiniz:

Fareyi her satırın üzerine getirirseniz, etkinliklerden herhangi birini düzenlemeniz veya çalıştırmanız için sağlanan eylemler olduğunu fark edeceksiniz.

Örneğin wp_update_themes olayının düzenleme ekranında, ayarlarını değiştirebilirsiniz.

Ayarlar -> Cron Çizelgeleri menü öğesi altında, varsayılan çizelgeleri görüntüleyebilir ve isterseniz kendi çizelgelerinizi ekleyip listede görüntülenmesi için bir isim verebilirsiniz.

Bir Cron İşi Nasıl Oluşturulur

Manuel olarak bir cron işi eklemek için tek yapmanız gereken temanın functions.php dosyasını düzenlemek. Basit bir örnek göstermek için, favori düzenleyicinizle açın ve aşağıdaki kod parçasını ekleyin:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); }

Burada 'my_cronjob' kancanızın adıdır ve 'my_cronjob_function', EMAIL_ADDRESS adresini istediğiniz adresle değiştirerek tanımladığınız adrese bir e-posta gönderecek olan işlevinizin adıdır.

Ardından, bu kancayı istediğimiz zamanda yürütülecek şekilde programlamamız gerekiyor.

İş Bir Kez Nasıl Çalıştırılır

Eylemi tek seferlik bir WP-Cron işi olarak gerçekleştirmek için, belirli bir zamanda bir kancayı tetiklemek için tasarlanmış wp_schedule_single_event() WordPress yerleşik işlevini kullanmalıyız. Yapısı şu şekildedir:

wp_schedule_single_event( $timestamp, $hook, $args, $wp_error )

$timestamp, olayın bir sonraki ne zaman çalıştırılacağına ilişkin Unix zaman damgasıdır ve $hook, olay çalıştırıldığında yürütülecek eylem kancasıdır.

Bu parametrelerin her ikisi de gereklidir. Şimdi isteğe bağlı parametreler hakkında konuşalım.

$args parametresiyle, kancanın geri çağırma işlevine geçmek için argümanlar içeren bir dizi kullanabilirsiniz. Dizideki her değer, ayrı bir parametre olarak geri aramaya iletilir. Dizi anahtarları yoksayılır.

$wp_error parametresi, başarısızlık durumunda bir WP_Error döndürmek için kullanılabilir. Varsayılan değeri yanlıştır.

functions.php dosyamızdaki ilgili kod şu şekilde olacaktır:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } wp_schedule_single_event( time() + 3600, 'my_cronjob' );

Bu noktada, özel görevinizi listede görebilmeniz gerekir.

İşi Tekrarlayan Bir Etkinlik Olarak Nasıl Çalıştırırsınız

WordPress'in bu senaryo için sağladığı şey, bu şekilde yapılandırılmış wp_schedule_event() işlevidir.

wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error)

$timestamp parametresi, olayın bir sonraki ne zaman çalıştırılacağı için gerekli Unix zaman damgasıdır, $recurrence ayrıca olayın daha sonra ne sıklıkta tekrarlanması gerektiği için gerekli bir dizedir ve $hook, olay çalıştırıldığında yürütülecek eylem kancasıdır.

İsteğe bağlı $args ve $wp_error parametreleri öncekiyle aynıdır.

Diyelim ki 1 saatlik bir yineleme ile işi çalıştıran kod şudur:

 add_action('my_hourly_cronjob', 'hourly_action'); function hourly_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_hourly_cronjob' )) { wp_schedule_event(time(), 'hourly', 'my_hourly_cronjob'); }

wp_next_scheduled() işlevini, yinelenen olayları önlemek ve devam etmeden ve çalıştırmadan önce görevin önceden planlanmadığından emin olmak için yukarıda gördüğünüz gibi bir 'if' ifadesinde kullandık.

Ayrıca Ayarlar -> Cron Programları altındaki programlanmış tablodaki 'saatlik' etiketini kullandık. Farklı bir oluşum istiyorsak, diyelim 45 dakikada bir, önce “45_minutes” isimli özel bir Cron Schedule oluşturup onu kodda kullanmalıyız.

 add_action('my_45_cronjob', 'my_45_action'); function my_45_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_45_cronjob' )) { wp_schedule_event(time(), '45_minutes', 'my_45_cronjob'); }

Bu noktada, özel görevinizi beklenen değişikliklerle birlikte listede görebilmeniz gerekir:

WP-Cron Dezavantajları

WordPress'in cron işlerini işleme şekli, görevin çalışmasını sağlar, ancak ne zaman belirtmenize izin vermez, çünkü söylediğimiz gibi, bir ziyaretçi web sitenizin bir sayfasını yüklediğinde kontrol yapılır.

Kullanıcıların ziyaret süresine cron işleri kontrolünü aktarırsak, boyutu veya ne kadar popüler olursa olsun web sitesi üzerinde olumsuz bir etkimiz olabilir.

Pressidium ile web sitenizi barındırın

60 GÜN PARA GERİ GARANTİSİ

PLANLARIMIZI GÖRÜN

Popüler bir web sitesi durumunda, çok sayıda görevin aynı anda yürütülmesi nedeniyle büyük miktarda trafik yaşayacaksınız. Bu, sunucunuzun kaynaklarını tüketebilir ve performansı etkileyebilir ve hatta web sitenizin hizmet dışı kalmasına neden olabilir.

Az sayıda ziyaretçi anlamına gelen küçük bir web sitesi söz konusu olduğunda, wp-cron çok sık tetiklenmeyecektir, bu nedenle bazı önemli cron işleri, yeterli yedekleme almamak veya bazılarını güncellemeyi geciktirmek gibi yan etkiler oluşturmak için yeterli süre ertelenebilir. bir cron işinde sayılan veriler.

WP-Cron'u devre dışı bırak

WP-Cron'un cron işlerini işleme şekli gereksinimlerinizi karşılamıyorsa ve görevlerin tam zamanında yürütülmesine ihtiyacınız varsa, WP-Cron'u devre dışı bırakmalı ve sunucu tarafı cron hizmeti kullanmalısınız.

WP-Cron'u devre dışı bırakmak, barındırma sağlayıcınız tarafından zaten sağlanan bir seçenek değilse, bunu kendiniz nasıl yapabileceğiniz aşağıda açıklanmıştır.

Kurulumunuzun kök klasörünün altında bulunan wp-config.php dosyasını favori editörünüz ile açın ve veritabanı tablosu öneki ile ilgili satırları bulun. Hemen ardından şu satırı ekleyin:

 // /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wN0b9WQk_'; define('DISABLE_WP_CRON', 'true');

Wp-cron.php'yi sizin için daha uygun olduğunda tetiklemek için Linux cron hizmeti gibi daha kararlı bir zamanlayıcı ile gitmek istiyorsanız bu zorunludur.

Sunucu Taraflı Bir Çözüm: Linux Cron Hizmeti

Pressidium'da, her 5 dakikada bir WP-Cron'u tetiklemek için Linux Crontab'ı kullanıyoruz. Planlanmış işlerinizin zamanında yürütülmesini sağlayan ve aynı zamanda WordPress web sitenizi aşırı yüklemeyi önleyen doğru zamandır. Bu, WP-Cron zamanlayıcısına müdahale etmez, sadece tetikleme mekanizmasına müdahale eder.

Çözüm

Umarım bu makale, WordPress Cron'u, ne olduğunu ve nasıl çalıştığını ve kendi programlarınızı ve görevlerinizi nasıl oluşturacağınızı öğrenmenize yardımcı olmuştur. Diğer sunucu tarafı çözümleri seçmeden önce, WP-Cron'un gereksinimleriniz için yeterli olup olmadığını iki kez düşünün.