PHP Academy · पाठ

Job के पुनःप्रयास, विलंब और चेनिंग

प्रयास और विलंब कॉन्फ़िगर करें तथा निर्भर jobs को एक साथ चेन करें

पाठ 3, कुल 4 में से13 चरण

Job के पुनःप्रयास, विलंब और चेनिंग, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

अधिकतम प्रयास

यह निर्धारित करें कि किसी कार्य को विफल कार्यों में भेजे जाने से पहले कितनी बार फिर से चलाया जाना चाहिए।

<?php
class SendWelcomeEmail implements ShouldQueue
{
    public int $tries = 3; // retry up to 3 times
}

अधिकतम अपवाद

अपवादों की संख्या के आधार पर पुनः प्रयास सीमित करने के लिए $maxExceptions का उपयोग करें (इसके विपरीत, प्रयासों में समय-सीमा समाप्त होने वाले प्रयासों सहित सभी प्रयास गिने जाते हैं)।

<?php
public int $maxExceptions = 3;

पुनः प्रयास से पहले प्रतीक्षा

पुनः प्रयासों के बीच सेकंड में विलंब निर्धारित करें।

<?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
}

कार्य की समय-सीमा

सेकंड में अधिकतम निष्पादन समय निर्धारित करें। यदि वर्कर इस सीमा को पार कर जाता है, तो कार्य को कतार में वापस भेज दिया जाता है।

<?php
public int $timeout = 120; // 2 minutes max

विलंब के साथ कार्य भेजना

कार्य भेजने वाले स्थान से उसके निष्पादन में विलंब करें।

<?php
SendReminder::dispatch($user)->delay(now()->addDay());
// Or pass a Carbon instance:
SendReminder::dispatch($user)->delay(Carbon::tomorrow());

fail() और released()

handle() के अंदर, कार्य को तुरंत विफल चिह्नित करने के लिए $this->fail($exception) कॉल करें, या विलंब के साथ उसे कतार में फिर से भेजने के लिए $this->release($delay) कॉल करें।

<?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() विधि

सभी प्रयास समाप्त होने पर सफ़ाई का काम चलाने के लिए कार्य में failed() विधि परिभाषित करें।

<?php
public function failed(\Throwable $exception): void
{
    // Notify team, update DB, etc.
    Log::error("Job failed: ".$exception->getMessage());
}

कार्यों की श्रृंखला

कार्यों की ऐसी श्रृंखला बनाएँ जिसमें प्रत्येक कार्य पिछले कार्य के सफल होने के बाद ही चले।

<?php
Bus::chain([
    new DownloadFile($url),
    new ProcessFile($path),
    new NotifyUser($user),
])->dispatch();

श्रृंखला की विफलताओं को संभालना

पूरी श्रृंखला को रोके बिना श्रृंखला की विफलताओं को संभालने के लिए catch() का उपयोग करें।

<?php
Bus::chain([...])
    ->catch(fn (\Throwable $e) => Log::error($e))
    ->dispatch();

Bus::batch()

कार्यों के एक समूह को समानांतर रूप से भेजें और सभी के पूरा होने या किसी के विफल होने पर कॉलबैक चलाएँ।

<?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();

कतार वर्कर विकल्प

विशिष्ट पुनः प्रयास और समय-सीमा सेटिंग के साथ वर्कर शुरू करें: php artisan queue:work --tries=3 --timeout=90। कार्य-स्तरीय सेटिंग वर्कर-स्तरीय सेटिंग को प्राथमिकता देती हैं।

सारांश

कार्य पर $tries, $backoff और $timeout सेट करें। अस्थायी विफलताओं के लिए release() और स्थायी विफलताओं के लिए fail() का उपयोग करें। क्रमिक कार्यों की श्रृंखला Bus::chain() से बनाएँ।

त्वरित जाँच

handle() के अंदर कौन-सी विधि कार्य को विलंब के साथ कतार में फिर से भेजती है?

शुरुआत निःशुल्क

एआई शिक्षक के साथ PHP सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
49
पाठ
195

अक्सर पूछे जाने वाले प्रश्न

क्या “Job के पुनःप्रयास, विलंब और चेनिंग” पाठ निःशुल्क है?

हाँ—“Job के पुनःप्रयास, विलंब और चेनिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Job के पुनःप्रयास, विलंब और चेनिंग” में मैं क्या सीखूँगा?

प्रयास और विलंब कॉन्फ़िगर करें तथा निर्भर jobs को एक साथ चेन करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PHP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PHP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Job के पुनःप्रयास, विलंब और चेनिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PHP Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर PHP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Queue की अवधारणाएँ और ड्राइवर
  2. Jobs बनाना और डिस्पैच करना
  3. Job के पुनःप्रयास, विलंब और चेनिंग
  4. Laravel Horizon से Queues की निगरानी
← PHP Academy पर वापस जाएँ