GuzzleHTTP/Promises PHP: पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

GuzzleHTTP/Promises PHP: पूर्ण गाइड उदाहरणों के साथ

PHP के लिए GuzzleHTTP/Promises लाइब्रेरी की इस विस्तृत गाइड में आपका स्वागत है। यह लाइब्रेरी Guzzle इकोसिस्टम की एक प्रमुख लाइब्रेरी है और async प्रोग्रामिंग के लिए "Promise" पैटर्न का शक्तिशाली कार्यान्वयन प्रदान करती है। अगर आप HTTP रिक्वेस्ट, पैरेलल टास्क या अपने PHP कोड को अधिक कुशल और पढ़ने योग्य बनाना चाहते हैं, तो यह लेख आपके लिए है।

1. यह क्या है और इसकी आवश्यकता क्यों है

GuzzleHTTP/Promises एक PHP लाइब्रेरी है जो Promises (प्रॉमिसेस) और async टास्क एक्जीक्यूशन की अवधारणा को लागू करती है। यह Guzzle इकोसिस्टम का हिस्सा है, लेकिन HTTP क्लाइंट से पूरी तरह स्वतंत्र रूप से उपयोग की जा सकती है। Promises का मुख्य विचार यह है कि आप एक ऑब्जेक्ट बनाते हैं जो किसी async ऑपरेशन के परिणाम को दर्शाता है, जो अभी, बाद में या कभी नहीं मिल सकता है। यह आपको ऐसा कोड लिखने की अनुमति देता है जो लंबे ऑपरेशनों के पूरा होने की प्रतीक्षा में प्रोग्राम के निष्पादन को ब्लॉक नहीं करता है।

PHP में इसकी आवश्यकता क्यों है? परंपरागत रूप से PHP एक सिंक्रोनस भाषा है, जहां प्रत्येक ऑपरेशन क्रमिक रूप से निष्पादित होता है। हालांकि, माइक्रोसर्विसेज, API इंटीग्रेशन और बाहरी सेवाओं के साथ काम करने की बढ़ती लोकप्रियता के साथ, पैरेलल टास्क के कुशल प्रबंधन की आवश्यकता उत्पन्न हुई। GuzzleHTTP/Promises इस समस्या को हल करता है, जिससे आप एक साथ कई ऑपरेशन (जैसे, विभिन्न API को कई HTTP रिक्वेस्ट) चला सकते हैं और उनके परिणामों को पूरा होने पर प्रोसेस कर सकते हैं, बिना सभी के एक-एक करके पूरा होने की प्रतीक्षा किए।

यह लाइब्रेरी async कोड के साथ काम करने के लिए टूल का एक पूरा सेट प्रदान करती है: Promises बनाना, उन्हें जोड़ना, चेन कॉल, एरर हैंडलिंग और टाइमआउट प्रबंधन। यह PHP समुदाय में async कार्य के लिए डी-फैक्टो मानक है और Laravel, Symfony, WordPress (प्लगइन्स के माध्यम से) और निश्चित रूप से Guzzle HTTP क्लाइंट जैसी लोकप्रिय परियोजनाओं में उपयोग किया जाता है।

2. इंस्टॉलेशन

लाइब्रेरी की स्थापना Composer के माध्यम से की जाती है, जो PHP के लिए मानक पैकेज मैनेजर है। अपने प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल में निम्नलिखित कमांड चलाएं:

composer require guzzlehttp/promises

यदि आप Guzzle HTTP क्लाइंट का उपयोग कर रहे हैं, तो Promises लाइब्रेरी पहले से ही इसकी डिपेंडेंसी में शामिल है, और अलग से इंस्टॉल करने की आवश्यकता नहीं है। इंस्टॉलेशन के बाद, सुनिश्चित करें कि आपकी स्क्रिप्ट में vendor/autoload.php फ़ाइल शामिल है:

require 'vendor/autoload.php';

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

आइए Promises के साथ काम करने का एक सरल उदाहरण बनाएं। हम एक Promise बनाएंगे जो 1 सेकंड के बाद "नमस्ते, दुनिया!" स्ट्रिंग लौटाता है:

use GuzzleHttp\Promise\Promise;
use GuzzleHttp\Promise\Utils;

// एक नया Promise बनाएं
$promise = new Promise(function () use (&$promise) {
    // async ऑपरेशन का सिमुलेशन
    usleep(1000000); // 1 सेकंड
    $promise->resolve('नमस्ते, दुनिया!');
});

// सफल निष्पादन के लिए हैंडलर जोड़ें
$promise->then(function ($value) {
    echo "प्राप्त: " . $value . PHP_EOL;
});

// Promise के निष्पादन को शुरू करें
Utils::queue()->add(function () use ($promise) {
    $promise->wait();
});

// कतार चलाएं
Utils::queue()->run();

यह उदाहरण बुनियादी मैकेनिक्स को दर्शाता है: Promise बनाना, उसे रिज़ॉल्व (resolve) करना और then मेथड के माध्यम से परिणाम को प्रोसेस करना।

4. मुख्य मेथड्स/फंक्शन्स/क्लासेस

आइए विस्तृत विवरण और उदाहरणों के साथ लाइब्रेरी के 8+ प्रमुख घटकों पर नज़र डालें।

4.1. क्लास GuzzleHttp\Promise\Promise

सिग्नेचर: new Promise(callable $waitFn = null, callable $canceller = null)

यह क्या करता है: एक नया Promise बनाता है। वैकल्पिक रूप से एक प्रतीक्षा फ़ंक्शन ($waitFn) लेता है, जो wait() मेथड को कॉल करने पर कॉल किया जाता है, और एक रद्दीकरण फ़ंक्शन ($canceller) लेता है।

अनुशंसाएँ