PHP

Laravel’de Görev Zamanlama

Bu makalede, Laravel web çerçevesinin heyecan verici özelliklerinden biri olan görev zamanlaması üzerinden geçeceğiz. Bu makale boyunca, Laravel’in uygulamanızda zamanlanmış görevleri yönetmenize nasıl izin verdiğine bakacağız. Ayrıca, gösteri amacıyla kendi özel zamanlanmış görevlerimizi de oluşturacağız.

Laravel çerçevesi, zamanlanmış görevleri ayarlamanıza olanak tanır, böylece bunları sistem düzeyinde ayarlama konusunda endişelenmenize gerek kalmaz. Laravel, bunları kullanıcı dostu bir şekilde tanımlamanıza izin verdiğinden, zamanlanmış görevleri ayarlarken bu karmaşık cron sözdiziminden kurtulabilirsiniz.

Makaleye geleneksel cron işlerini kurmaya nasıl alıştığınızla başlayacağız ve ardından bunu başarmanın Laravel yolunu keşfedeceğiz. Makalenin ikinci yarısında, konuyla ilgili uygulamalı bilgi sağlaması gereken birkaç özel zamanlanmış görev oluşturarak bunu deneyeceğiz.

Geleneksel Zamanlanmış Görev Kurulumu

Günlük uygulama geliştirmenizde, belirli komut dosyalarını veya komutları düzenli aralıklarla yürütmenizi gerektiren bir durumla sık sık karşılaşırsınız. *nix sistemiyle çalışıyorsanız, muhtemelen cron işlerinin bu komutları işlediğinin farkındasınızdır. Öte yandan, Windows tabanlı sistemlerde zamanlanmış görevler olarak bilinirler.

*nix tabanlı cron işinin basit bir örneğine hızlıca göz atalım.

Oldukça basit— statistics.sh her beş dakikada bir dosyalayın!

Bu oldukça basit bir kullanım örneği olsa da, kendinizi genellikle daha karmaşık kullanım örneklerini uygulamanızı gerektiren bir durumda bulursunuz. Öte yandan, karmaşık bir sistem, farklı zaman aralıklarında çalışan birden çok cron işi tanımlamanızı gerektirir.

Karmaşık bir web uygulamasının arka uçta periyodik olarak gerçekleştirmesi gereken bazı görevleri görelim.

  • Veritabanı arka ucundaki gereksiz verileri temizleyin.
  • Güncel tutmak için ön uç önbelleğe alma dizinlerini güncelleyin.
  • Site istatistiklerini hesaplayın.
  • Mailleri gönder.
  • Farklı site öğelerini yedekleyin.
  • Raporlar oluşturun.
  • Ve dahası.

Gördüğünüz gibi, periyodik olarak ve ayrıca farklı zaman aralıklarında çalıştırılmayı bekleyen birçok şey var. Deneyimli bir sistem yöneticisiyseniz, tüm bu görevler için cron işlerini tanımlamanız çok kolay, ancak bazen geliştiriciler olarak daha kolay bir yol olmasını diliyoruz.

Neyse ki, Laravel yerleşik bir Görev Zamanlama Daha önce hiç olmadığı gibi zamanlanmış görevleri tanımlamanıza izin veren API. Ve evet, bir sonraki bölüm tamamen bununla ilgili – Laravel görev planlamasının temelleri.

Laravel Yolu

Önceki bölümde, cron işlerini kurmanın geleneksel yolundan geçtik. Bu bölümde, Task Scheduling API bağlamında Laravel’in özelliklerini inceleyeceğiz.

Devam etmeden önce, anlamamız gereken en önemli şey, Laravel tarafından sağlanan zamanlama özelliğinin tıpkı diğer özellikler gibi olduğu ve otomatik olarak çağrılmayacağıdır. Yani sistem düzeyinde herhangi bir şey yapmanız gerekmediğini düşünüyorsanız, şansınızın tükendiğini söyleyebilirim.

Aslında, Laravel zamanlama sistemini kullanmak istemeniz durumunda yapmanız gereken ilk şey, her dakika çalışan ve aşağıdaki snippet’te gösterilen artisan komutunu çağıran cron işini kurmaktır.

Yukarıdaki artisan komutu, Laravel zamanlayıcısını çağırır ve bu da uygulamanızda tanımlanan bekleyen tüm cron işlerini yürütür.

Tabii ki, Laravel uygulamanızda zamanlanmış görevleri nasıl tanımlayacağımızı henüz görmedik ve bundan sonra dalacağımız şey bu.

Bu schedule yöntemi AppConsoleKernel Uygulamaya özel zamanlanmış görevler tanımlamak isterseniz kullanmanız gereken sınıf.

Devam edin ve içeriği alın app/Console/Kernel.php dosya.

Gördüğünüz gibi, çekirdek kodun kendisi faydalı bir örnek sunuyor. Yukarıdaki örnekte, Laravel aşağıdakileri çalıştırır: inspire zanaatkar komutu saatlik. Sözdiziminin ilk etapta çok sezgisel olduğunu düşünmüyor musunuz?

Aslında, Laravel’in zamanlama görevlerini tanımlamanıza izin verdiği birkaç farklı yol vardır:

  • Kapatma/çağrılabilirliği kullanın.
  • Zanaatkar komutunu çağırın.
  • Kabuk komutunu yürütün.

Ayrıca, aralarından seçim yapabileceğiniz çok sayıda yerleşik zamanlama frekansı vardır:

  • her dakika/beş dakikada bir
  • saatlik/günlük/haftalık/üç aylık/yıllık
  • günün belirli bir saatinde
  • ve daha fazlası

Aslında, özel cron işlerinizi oluşturmak için kabuğa dokunmanıza gerek kalmaması için eksiksiz bir rutin seti sağladığını söyleyebilirim!

Evet, özel zamanlanmış görevlerinizi nasıl uygulayacağınızı öğrenmek için istekli olduğunuzu söyleyebilirim ve makalenin başında da söz verdiğim şey bu.

Laravel’de İlk Zamanlanmış Görevinizi Oluşturun

Tartıştığımız gibi, Laravel’in zamanlanmış görevleri tanımlamanıza izin verdiği farklı yollar vardır. Nasıl çalıştığını anlamak için her birinin üzerinden geçelim.

Kapatma/Çağrılama Yöntemi

Zamanlama API’si şunları sağlar: call çağrılabilir veya kapatma işlevi yürütmenize izin veren yöntem. revize edelim app/Console/Kernel.php Aşağıdaki kod ile dosya.

Gördüğünüz gibi, kapatma fonksiyonunu ilk argüman olarak geçtik. call yöntem. Ayrıca, frekansı her 30 dakikada bir olarak ayarladık, böylece kapatma işlevini her 30 dakikada bir gerçekleştirecek!

Örneğimizde, kullanıcı başına toplam gönderileri sayıyoruz ve istatistik tablosunu buna göre güncelliyoruz.

Esnaf Komutanlığı

Kapanışlar veya çağrılar dışında, belirli aralıklarla yürütülecek bir artisan komutu da planlayabilirsiniz. Aslında, aynı zamanda daha iyi kod organizasyonu ve yeniden kullanılabilirlik sağladığından, kapatmalara göre tercih edilen yaklaşım bu olmalıdır.

Devam edin ve içeriği gözden geçirin. app/Console/Kernel.php aşağıdaki dosya ile.

Bu command Yukarıdaki kod parçacığında gösterildiği gibi bir artisan komutu planlamak isterseniz kullanmak istediğiniz yöntem. Artisan komut imzasını, ilk argüman olarak iletmeniz gerekir. command yöntem.

Tabii ki, ilgili artisan komutunu da tanımlamanız gerekir. app/Console/Commands/UserStatistics.php.

Yürütme Komutu

Buraya kadar tartıştığımız yöntemlerin Laravel uygulamasının kendisine özgü olduğunu söyleyebiliriz. Ayrıca Laravel, dış uygulamaları da çalıştırabilmeniz için kabuk komutlarını zamanlamanıza izin verir.

Veritabanınızın yedeğini her gün nasıl alacağınızı gösteren hızlı bir örnek üzerinden gidelim.

Kullanmanız gereken koddan anlaşılıyor exec zamanlayıcının yöntemini seçin ve çalıştırmak istediğiniz komutu ilk argümanı olarak iletmeniz gerekir.

Bunun dışında, biz de kullandık sendOutputTo komutun çıktısını toplamanızı sağlayan yöntem. Öte yandan, bir yöntem var, emailOutputToçıktı içeriğini e-posta ile göndermenizi sağlar!

Ve bu bizi makalenin sonuna getiriyor. Aslında, Laravel Scheduling API’nin yüzeyini henüz çizdik ve onun kedicik içinde sunacağı çok şey var.

Çözüm

Bugün, Laravel web çerçevesindeki görev zamanlama API’sini inceledik. Periyodik olarak çalıştırılması gereken görevleri yönetmenize ne kadar kolay izin verdiğini görmek büyüleyiciydi.

Makalenin başında, zamanlanmış görevleri ayarlamanın geleneksel yolunu tartıştık ve ardından bunu yapmanın Laravel yolunu tanıttık. Makalenin ikinci yarısında, görev zamanlama kavramlarını göstermek için birkaç pratik örnekten geçtik.

Umarım makaleyi beğenmişsinizdir ve Laravel’de zamanlanmış görevler ayarlama konusunda kendinize daha fazla güvenmelisiniz. Laravel’e yeni başlayanlar veya bilginizi, sitenizi veya uygulamanızı uzantılarla genişletmek isteyenler için, çalışabileceğiniz çeşitli konularımız var. Envato Pazarı.

Aklınıza bir şey gelirse, aşağıdaki beslemeyi kullanarak bir sohbet başlatalım!

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu