PHP के लिए HTTP-क्लाइंट: अनुरोधों के साथ काम करने के लिए शीर्ष लाइब्रेरी
आधुनिक PHP-डेवलपमेंट शायद ही कभी HTTP-अनुरोध भेजे बिना होता है: बाहरी API के साथ एकीकरण, वेब पेजों की पार्सिंग, सेवाओं की उपलब्धता की जाँच। PHP के अंतर्निहित साधन (जैसे, file_get_contents() या cURL) अक्सर पर्याप्त लचीले या सुविधाजनक नहीं होते। सौभाग्य से, PHP का इकोसिस्टम शक्तिशाली क्लाइंट लाइब्रेरी प्रदान करता है जो HTTP के साथ काम को सरल बनाती हैं। इस लेख में हम PHP के लिए शीर्ष HTTP-क्लाइंट लाइब्रेरी, उनकी विशेषताएँ और उपयोग के उदाहरण देखेंगे।
1. Guzzle — वास्तविक मानक
Guzzle PHP में HTTP के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह लाखों प्रोजेक्ट्स में स्थापित है, जिसमें Laravel, Drupal और Symfony शामिल हैं। Guzzle एक स्वच्छ ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है, एसिंक्रोनस अनुरोध, मिडलवेयर, कनेक्शन पूल और PSR-18 (HTTP Client) का समर्थन करता है।
स्थापना
composer require guzzlehttp/guzzleउदाहरण: प्रतिक्रिया प्रसंस्करण के साथ GET-अनुरोध
<?phprequire 'vendor/autoload.php';
use GuzzleHttp\\Client;
$client = new Client([ 'base_uri' => 'https://api.github.com/', 'timeout' => 5.0,]);
$response = $client->request('GET', 'users/octocat');
echo $response->getStatusCode(); // 200$body = json_decode($response->getBody(), true);echo $body['login']; // octocat?>एसिंक्रोनस अनुरोध
<?php$promise = $client->getAsync('https://httpbin.org/delay/1');$promise->then( function ($response) { echo 'हो गया: ' . $response->getStatusCode(); }, function ($exception) { echo 'त्रुटि: ' . $exception->getMessage(); });$promise->wait(); // निष्पादन के लिए अनिवार्य रूप से कॉल करें?>लाभ: विशाल समुदाय, लचीलापन, लॉगिंग/कैशिंग के लिए मिडलवेयर, PSR-7/PSR-18 का पूर्ण समर्थन।
2. Symfony HttpClient — तेज़ और आधुनिक
Symfony HttpClient घटक Symfony 4.4 में दिखाई दिया और उच्च प्रदर्शन, मल्टीप्लेक्सिंग (HTTP/2) के अंतर्निहित समर्थन और Symfony के साथ उत्कृष्ट एकीकरण के कारण तेज़ी से लोकप्रिय हुआ। यह PSR-18 के साथ भी संगत है।
स्थापना
composer require symfony/http-clientउदाहरण: समानांतर अनुरोध
<?phprequire 'vendor/autoload.php';
use Symfony\\Component\\HttpClient\\HttpClient;
$client = HttpClient::create();
$responses = [];$urls = [ 'https://api.github.com/users/octocat', 'https://api.github.com/users/nonexistent',];
foreach ($urls as $url) { $responses[] = $client->request('GET', $url);}
foreach ($responses as $response) { // getContent() विधि स्वचालित रूप से उत्तर की प्रतीक्षा करती है echo $response->getStatusCode() . ' - ' . $response->getContent(false) . "";}?>उन्नत उपयोग: retry और कैशिंग
<?phpuse Symfony\\Component\\HttpClient\\RetryableHttpClient;use Symfony\\Component\\HttpClient\\HttpClient;
$client = new RetryableHttpClient( HttpClient::create(['timeout' => 2.0]), maxRetries: 3);
$response = $client->request('GET', 'https://example.com');echo $response->getContent();?>लाभ: उच्च गति, अंतर्निहित retry तंत्र, HTTP/2 push का समर्थन, कम मेमोरी खपत।
3. cURL (PHP एक्सटेंशन) — क्लासिक
cURL एक्सटेंशन PHP में निर्मित समाधान है जो सीधे libcurl के साथ काम करता है। इसे तृतीय-पक्ष लाइब्रेरी स्थापित करने की आवश्यकता नहीं है, लेकिन कोड अधिक निम्न-स्तरीय हो जाता है। यह सरल कार्यों या जब Composer का उपयोग नहीं किया जा सकता है, के लिए उपयुक्त है।
उदाहरण: सरल POST-अनुरोध
<?php$ch = curl_init('https://httpbin.org/post');curl_setopt_array($ch, [ CURLOP