İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme
Denemeleri ve gecikmeleri yapılandırın, bağımlı işleri birbirine zincirleyin.
İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
Maksimum Deneme Sayısı
Bir işin failed_jobs'e taşınmadan önce kaç kez yeniden deneneceğini ayarlayın.
<?php
class SendWelcomeEmail implements ShouldQueue
{
public int $tries = 3; // retry up to 3 times
}Maksimum Hata Sayısı
Yeniden denemeleri hata sayısına göre sınırlamak için $maxExceptions kullanın (zaman aşımını da içeren tüm denemeleri sayan deneme sayısının aksine).
<?php
public int $maxExceptions = 3;Yeniden Deneme Bekleme Süresi
Yeniden deneme girişimleri arasındaki gecikmeyi saniye cinsinden ayarlayın.
<?php
public int $backoff = 60; // wait 60 seconds before retry
// Or exponential backoff:
public function backoff(): array
{
return [1, 5, 10]; // 1s, 5s, 10s between attempts
}İş Zaman Aşımı
Saniye cinsinden maksimum yürütme süresi belirleyin. Çalışan bu süreyi aşarsa iş yeniden kuyruğa bırakılır.
<?php
public int $timeout = 120; // 2 minutes maxGecikmeli İş Gönderme
Gönderme çağrısının yapıldığı yerden bir işi geciktirin.
<?php
SendReminder::dispatch($user)->delay(now()->addDay());
// Or pass a Carbon instance:
SendReminder::dispatch($user)->delay(Carbon::tomorrow());fail() ve released()
handle() içinde, işi hemen başarısız olarak işaretlemek için $this->fail($exception) veya gecikmeyle yeniden kuyruğa almak için $this->release($delay) çağırın.
<?php
public function handle(): void
{
try {
// ...
} catch (TransientException $e) {
$this->release(30); // re-queue in 30 seconds
} catch (FatalException $e) {
$this->fail($e); // mark as failed now
}
}failed() Yöntemi
Tüm denemeler tükendiğinde temizlik işlemini çalıştırmak için iş üzerinde bir failed() yöntemi tanımlayın.
<?php
public function failed(\Throwable $exception): void
{
// Notify team, update DB, etc.
Log::error("Job failed: ".$exception->getMessage());
}İş Zincirleme
Her işin yalnızca önceki iş başarıyla tamamlandıktan sonra çalışması için işleri zincirleyin.
<?php
Bus::chain([
new DownloadFile($url),
new ProcessFile($path),
new NotifyUser($user),
])->dispatch();Yakalanan Zincir Hataları
Tüm zinciri durdurmadan zincir hatalarını ele almak için catch() kullanın.
<?php
Bus::chain([...])
->catch(fn (\Throwable $e) => Log::error($e))
->dispatch();Bus::batch()
Bir iş grubunu paralel olarak gönderin ve tüm işler tamamlandığında veya herhangi biri başarısız olduğunda bir geri çağrı çalıştırın.
<?php
Bus::batch([
new ImportRow($rows[0]),
new ImportRow($rows[1]),
])->then(fn ($b) => Log::info("All done"))
->catch(fn ($b, $e) => Log::error($e))
->dispatch();Kuyruk Çalışanı Seçenekleri
Çalışanları belirli yeniden deneme ve zaman aşımı ayarlarıyla başlatın: php artisan queue:work --tries=3 --timeout=90. İş düzeyindeki ayarlar, çalışan düzeyindeki ayarları geçersiz kılar.
Özet
İş üzerinde $tries, $backoff ve $timeout değerlerini ayarlayın. Geçici hatalar için release(), kalıcı hatalar için fail() kullanın. Sıralı işleri Bus::chain() ile zincirleyin.
Hızlı Kontrol
handle() içinden bir işi gecikmeyle yeniden kuyruğa alan yöntem hangisidir?
Yapay zeka eğitmeniyle PHP öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 49
- Dersler
- 195
Sıkça Sorulan Sorular
“İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme” dersi ücretsiz mi?
Evet — “İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme” dersinde ne öğreneceğim?
Denemeleri ve gecikmeleri yapılandırın, bağımlı işleri birbirine zincirleyin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kuyruk Kavramları ve Sürücüleri
- İşler Oluşturma ve Dağıtma
- İş Yeniden Denemeleri, Gecikmeleri ve Zincirleme
- Laravel Horizon ile Kuyrukları İzleme