HTTP-Client für PHP: Top-Bibliotheken für die Arbeit mit Anfragen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

HTTP-Client für PHP: Top-Bibliotheken für die Arbeit mit Anfragen



Moderne PHP-Entwicklung kommt selten ohne das Senden von HTTP-Anfragen aus: Integration mit externen APIs, Webseiten-Parsing, Überprüfung der Verfügbarkeit von Diensten. Die integrierten PHP-Mittel (z. B. file_get_contents() oder cURL) sind oft nicht flexibel oder bequem genug. Glücklicherweise bietet das PHP-Ökosystem leistungsstarke Client-Bibliotheken, die die Arbeit mit HTTP vereinfachen. In diesem Artikel analysieren wir die Top-Bibliotheken für HTTP-Clients in PHP, ihre Besonderheiten und Anwendungsbeispiele.



1. Guzzle — der De-facto-Standard



Guzzle ist die beliebteste Bibliothek für die Arbeit mit HTTP in PHP. Sie ist in Millionen von Projekten installiert, darunter Laravel, Drupal und Symfony. Guzzle bietet eine saubere objektorientierte Schnittstelle, unterstützt asynchrone Anfragen, Middleware, Verbindungspools und PSR-18 (HTTP Client).



Installation

composer require guzzlehttp/guzzle


Beispiel: GET-Anfrage mit Antwortverarbeitung

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


Asynchrone Anfrage

<?php$promise = $client->getAsync('https://httpbin.org/delay/1');$promise->then(    function ($response) {        echo 'Fertig: ' . $response->getStatusCode();    },    function ($exception) {        echo 'Fehler: ' . $exception->getMessage();    });$promise->wait(); // muss aufgerufen werden, um ausgeführt zu werden?>


Vorteile: riesige Community, Flexibilität, Middleware für Logging/Caching, vollständige Unterstützung von PSR-7/PSR-18.



2. Symfony HttpClient — schnell und modern



Die Komponente Symfony HttpClient erschien in Symfony 4.4 und gewann schnell an Beliebtheit dank hoher Leistung, integrierter Unterstützung für Multiplexing (HTTP/2) und hervorragender Integration mit Symfony. Sie ist auch mit PSR-18 kompatibel.



Installation

composer require symfony/http-client


Beispiel: Parallele Anfragen

<?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) { // Die Methode getContent() wartet automatisch auf die Antwort echo $response->getStatusCode() . ' - ' . $response->getContent(false) . "";}?>


Fortgeschrittene Nutzung: Retry und Caching

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


Vorteile: hohe Geschwindigkeit, integrierter Retry-Mechanismus, Unterstützung für HTTP/2 Push, geringer Speicherverbrauch.



3. cURL (PHP-Erweiterung) — Klassiker



Die Erweiterung cURL ist eine in PHP integrierte Lösung, die direkt mit libcurl arbeitet. Sie erfordert keine Installation von Drittanbieter-Bibliotheken, aber der Code ist eher low-level. Geeignet für einfache Aufgaben oder wenn Composer nicht verwendet werden kann.



Beispiel: Einfache POST-Anfrage

<?php$ch = curl_init('https://httpbin.org/post');curl_setopt_array($ch, [    CURLOP                    

Empfehlungen