WordPress Cron: Sunucunuzu Çöktürmeden Arka Plan Görevleri
WordPress'te görevleri otomatik olarak çok sık çalıştırmanız gerekiyorsa, sunucunuz çökebilir veya zaman aşımları alabilirsiniz (sunucunuz çok fazla işlem süresi veya kaynak gerektirdiği için kodunuzu yürütmeyi durdurur?). Neyse ki, bu tür görevleri WordPress cron olaylarını kullanarak planlayabiliriz. Nasıl yapılacağını açıklayacağım, ancak önce bu işlevi Nelio'da neden kullanmamız gerektiğini açıklamama izin verin.
Nelio Content's Analytics: Karmaşık Bir Sorunu Basitleştirme
Bizim hakkımızda hiçbir şey bilmeden buraya gelen yeni bir ziyaretçiyseniz, hoş geldiniz! Nelio'da kendimizi WordPress için eklentiler oluşturmaya ve bundan bir yaşam kurmaya adadık. Bugün size, web sitenizin içeriğinin hem oluşturulmasını hem de tanıtımını geliştirmenize yardımcı olacak eklentimiz Nelio Content'ten bahsedeceğim.

1.2.0 sürümünden bu yana Nelio Content , içeriğinizin ne kadar iyi (veya kötü?) performans gösterdiğini kontrol edebileceğiniz bir analiz bölümü içerir. Buradaki fikir, gönderilerinizin etkinliğini, sahip oldukları sayfa görüntüleme sayısına ve sosyal ağlarınızda oluşturdukları katılım derecesine göre (yani, Facebook veya LinkedIn'de kaç beğeniye sahip olduklarını, kaç yorum olduğunu) görebilmenizdir. aldılar, vb.).
Gördüğünüz gibi, bunu açıklamak ve anlamak çok kolay, ancak analitik eklemek büyük bir sorunu beraberinde getiriyor : WordPress sunucumun donmasına neden olmadan analitik verilerini nasıl güncelleyebilirim? Kahretsin, bu zor mu?
İdeal bir dünyada, tüm bu verilerin her milisaniyede (hatta her nanosaniyede) güncellenmesini istersiniz, ancak bunun imkansız olduğunu söylediğim için üzgünüm. Deli gibi programlamaya başlamadan önce, Nelio'nun ekibi neyin mantıklı olduğunu tartışmak için oturdu. Masada iki seçenek vardı:
- Bir ziyaretçi bir sayfayı veya yayını her ziyaret ettiğinde, o içeriğin toplam ziyaret sayısında +1 olarak saymak için ziyaret izleme bilgilerini veritabanına kaydederiz.
- Bu bilgilere Google Analytics gibi harici bir hizmet aracılığıyla erişiriz.
Nelio Content kullanıyorsanız, sonunda uyguladığımız seçeneğin ikinci seçenek olduğunu bileceksiniz. Diğerlerinin yanı sıra, ana nedenler şunlardı:
- Ziyaretlerin izleme bilgilerini doğrudan WordPress'e kaydetmek bir kabus . Çok fazla trafiğe sahip bir web'iniz varsa, veritabanı nedeniyle hızından ödün verebilirsiniz. Sürekli tablolara yazı yazarken daraltırsınız. Kötü bir fikir!
- Bu bilgiyi bulutta saklamanın müşterilerimize yansıtmamız gereken (yüksek) bir maliyeti vardır. Bu mümkün, ancak analitiğin herkes tarafından erişilebilir olmasını istedik… Yani masadan kalktı.
- Ziyaretlerle ilgili bilgileri izlersek (verileri nereye kaydettiğimizden bağımsız olarak), kullanıcılarımız şu anda gerçek verileri göremez , çünkü sizin hakkınızda bilgi toplayabilmemiz için birkaç hafta beklemeniz gerekir. Ziyaretçi. Ancak en kısa sürede veri istiyoruz (yalnızca Nelio İçeriğini geliştirmekle kalmıyoruz, aynı zamanda onu günlük olarak kullanıyoruz… ve sahip olduğumuz en talepkar müşterilerimizden bazıları mıyız?)!
- Çoğu web sitesi bu bilgileri özel harici araçlarla zaten takip ediyorsa, tekerleği burada yeniden mi icat edeceğiz? Pek mantıklı değil.
Tüm bunları göz önünde bulundurarak, sayfa görüntüleme bilgilerini almak için Google Analytics API'sini kullanmaya karar verdik. Şimdi, hala verileri ne zaman güncelleyeceğimiz sorunumuz var. Verilere her ihtiyacımız olduğunda Google Analytics'i sorgulamak en akıllıca çözüm değildir. Ayrıca, bazı API'lerin belirli bir zaman diliminde yapılabilecek arama sayısına kısıtlamaları olduğu için her seferinde hesaplayamadığımız sosyal ağ analizlerimiz de var (evet, sana bakıyorum, Facebook ?).
Sonunda, bu bilgiyi müşterinin veritabanında önceden hesaplamamız gerektiği ve daha sonra mantıklıysa zaman zaman güncellememiz gerektiği sonucuna vardık (her dakika güncellemeye çalışırsak, hem veritabanını hem de WordPress sunucusunu çökertmek). Ve bu bilgiyi veritabanında saklama konusunda endişelenmeyin; her gönderi için, yalnızca toplam sayfa görüntüleme sayısını ve etkileşim metriklerini kaydederiz (yani, her bir izleme bilgisini değil, yalnızca toplu verileri depolarız). Bu nedenle, müşterinin veritabanında kapladığımız ek alan minimumdur ( eklentiyi devre dışı bırakırsanız ve bu nedenle bizi o zaman belirtirseniz otomatik olarak kaldırdığımız birkaç postmeta daha).
Analitiği yalnızca zaman zaman ve yalnızca mantıklıysa güncelleme konusuna geri dönersek, sonunda uyguladığımız şey şudur:
- Nelio İçeriğinde analitiği etkinleştirirken kullanıcıların en son gönderiler için analitik verileri hesaplamasına izin verin. Bu şekilde eklentimizi kullandığınız ilk dakikadan itibaren geçerli verilere sahip olabilirsiniz.
- Bu kalıbı izleyerek analitiği yeniden hesaplamak için WordPress cron'unu kullanın:
- İlk olarak, bugün yayınlanan içeriğin analitiğini güncelleyin.
- Bir saat sonra, bir ay önce yayınlanan birkaç gönderiyi alın ve istatistiklerini güncelleyin.
- Bir saat sonra, bir aydan daha önce yayınlanmış birkaç gönderiyi alın ve istatistiklerini güncelleyin.
- Bir saat sonra, analitiğin tepesinden birkaç gönderi alın ve istatistiklerini güncelleyin.
- Bir saat sonra, süreci baştan başlatın.
- Kullanıcılara, analitik bilgilerini herhangi bir zamanda Nelio Content ayarlarında güncelleyebilmeleri için seçenek verin. Bu, yeniden hesaplama sürecini kendileri başlatmak isteyebilecek en talepkar kullanıcılar için yararlıdır.
Gördüğünüz gibi , işlemi yalnızca saatte bir çalıştırıyoruz ve her yürütmede yalnızca çok az sayıda gönderinin analitiğini yeniden hesaplıyoruz , böylece sunucu yükü etkilenmez ve sosyal ağın sınırlarına saygı duyarız. API'ler. Buna ek olarak, yeniden hesaplanacak gönderilerin seçimi akıllıca yapılır . Her gönderi için, istatistiklerin en son yeniden hesaplandığı tarih saklanır. Bu değeri, gönderileri sıralamak ve daha eski verilerle güncellemek için kullanırız.
Bu yaklaşım çoğu durumda oldukça işe yarar: yeni içerik yayınlandığında, genellikle yaşamın ilk gününde sosyal ağlarda daha fazla ziyaret, yorum ve etkinlik alır . Bu nedenle, daha önce tanımladığımız modelin tamamı mantıklı. Nelio İçeriğinde , en yeni gönderileri ve ayrıca en alakalı olanları (sıralamanın en üstünde olanlar) daha sık güncellerken, yine de içeriğinizin geri kalanını güncellemek için biraz zaman kazanırız.
WordPress Cron Nasıl Çalışır?
WordPress'e bir sayfa her yüklendiğinde (bir gönderi, ana sayfanız veya WordPress'teki bir URL aracılığıyla erişilebilen diğer herhangi bir içerik ), yürütülüp yürütülmediklerini görmek için programlanmış işlevlerin bir listesi kontrol edilir. Bazı işlevler varsa, bunlar eşzamansız olarak başlatılır, böylece yürütülmeleri sayfa yüklemenizi etkilemez.
WordPress'te görevler wp-cron.php tarafından yönetilir. İki tür görev vardır:
Bir görevi önceden belirlenmiş bir zamanda planlamak için şunu yapmanız yeterlidir:
Bu şekilde, bu kodu çalıştırdığınız andan bir saat sonra my_task() işlevini çalıştıracaksınız (örneğin, onu doğrudan functions.php 'nize koyarak test edebilirsiniz). wp_schedule_single_event işleviyle ilgili bilgilere bakın.
Ve burada, her saat başı çalışacak yinelenen bir görev oluşturmak için bir örneğiniz var:
Yine, wp_schedule_event işlevi için Kodeks'te ayrıntılara sahipsiniz. Çok basit, inan bana. Daha ayrıntılı bir eğitim istiyorsanız, bunu SitePoint'ten kaçırmayın.
Bu arada, WordPress cron'unuzda hangi görevleri planladığınızı görmek istiyorsanız , bunu WP Control eklentisini yükleyerek yapabilirsiniz. Bu, Nelio İçerik analitiğinin geliştirilmesi sırasında testleri yapmak için çok faydalı oldu.
WordPress cronuna ek olarak, WordPress ile arka planda görevleri çalıştırmak için başka seçenekleriniz de vardır. En popülerleri şu ikisidir:
- TechCrunch WP Eşzamansız Görevler.
- WP Arka Plan İşleme.
Her ikisi de size WordPress cron'da bulacağınızdan daha karmaşık seçenekler sağlayacak kütüphanelerdir, ancak özel ihtiyaçlarınıza daha uygun olabileceğinden onlara bir göz atmanızı tavsiye ederim.
Son Açıklamalar
Bu yazının sonuna ulaştıysanız, tebrikler! Gördüğünüz gibi, somut bir işlevselliğin arkasında her zaman çok fazla çalışma vardır . Şaşırtıcı bir şekilde, yine de, bu çalışmanın çoğu, onları gerçekten yapmak yerine, nasıl yapılacağını tartışmak/karar vermekle ilgilidir.
WordPress için eklenti geliştirmenin zorlukları vardır. Gerekli deneyime sahip değilseniz, inanılmaz hasar verebilirsiniz. Bilgi aramalı ve herhangi bir sorunu çözmek için seçtiğiniz seçeneğin “en iyi” (veya en azından “en az kötü”) olduğundan emin olmalısınız. Bunu yapmak için, en karmaşık şüphelerinizi nerede paylaşabileceğinizi yerel topluluğunuza sormak veya eklenti geliştirme el kitabının kendisini okumak gibi birden fazla kaynağınız var. Her ziyaretçi geldiğinde analitiği güncellemeye karar verseydik ne olurdu? ?
Son olarak, lütfen bana bu makale hakkında ne düşündüğünüzü açıklayan veya cron görevlerini nasıl kullandığınızı detaylandıran bir yorum bırakın. Seni bir dakikadan fazla sürmeyecek ve beni çok mutlu edeceksin! ?
Öne çıkan resim, Markus Spiske tarafından.
ev borcu WordPress sitesi