Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich asynchrone GET-Anfragen in PHP ausführen?
Asynchrone GET-Anfragen in PHP: Eine detaillierte Anleitung
Einführung
Durchführen asynchroner GET-Anfragen in PHP ermöglicht es Ihrem Skript, eine Anfrage an einen Remote-Server zu initiieren, ohne den aktuellen Ausführungsfluss zu blockieren. Dies ist äußerst vorteilhaft für Webanwendungen, die zahlreiche Anfragen senden müssen, ohne die Benutzerinteraktionen zu verzögern.
Verwendung von file_get_contents() für asynchrone Anfragen
file_get_contents() ist ein integriertes in PHP-Funktion, die sowohl für synchrone als auch asynchrone GET-Anfragen verwendet werden kann. Standardmäßig verhält es sich synchron und blockiert das Skript, bis die Anfrage abgeschlossen ist. Die Bereitstellung eines optionalen Kontextarguments ermöglicht jedoch einen asynchronen Betrieb.
Synchronisierte Anfrage:
$output = file_get_contents('http://www.example.com/'); echo $output;
Asynchrone Anfrage:
$context = stream_context_create([ 'http' => [ 'ignore_errors' => true ] ]); $output = file_get_contents('http://www.example.com/', false, $context);
Verwenden von fsockopen() für Truly Asynchronous Anfragen
Für Situationen, in denen selbst das asynchrone Verhalten von file_get_contents() unerwünscht ist, bietet fsockopen() einen Ansatz auf niedrigerer Ebene, um echte Asynchronität zu erreichen. Diese Funktion ermöglicht eine direkte Socket-Kommunikation.
Asynchrone Anfrage mit fsockopen():
function curl_post_async($url) { // 1. Parse URL $parts = parse_url($url); // 2. Open Socket $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); // 3. Construct Request $out = "GET " . $parts['path'] . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Connection: Close\r\n\r\n"; // 4. Send Request and Close Socket fwrite($fp, $out); fclose($fp); }
Diese Funktion löst die GET-Anfrage sofort aus , ohne auf eine Antwort zu warten, und gibt die Kontrolle an den Anrufer zurück. Es ist wichtig zu beachten, dass die Verwendung von fsockopen() im Vergleich zu file_get_contents() einen praktischeren Ansatz erfordert.
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone GET-Anfragen in PHP ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!