Asynchrone PHP-Aufrufmethode
Der Client initiiert eine Anfrage und der Server empfängt sie Bearbeitung nach Anfrage und Rückgabe der Bearbeitungsergebnisse.
Manchmal muss der Server einen zeitaufwändigen Vorgang ausführen und das Ergebnis dieses Vorgangs muss nicht an den Client zurückgegeben werden. Da PHP jedoch synchron ausgeführt wird, muss der Client auf die Verarbeitung des Dienstes warten, bevor er mit dem nächsten Schritt fortfahren kann.
Daher eignen sich zeitaufwändige Vorgänge für die asynchrone Ausführung. Nachdem der Server die Anforderung erhalten hat, kehrt er zurück, nachdem er die vom Client benötigten Daten verarbeitet hat, und führt dann eine zeitaufwändige Ausführung aus. asynchrone Verarbeitung von Vorgängen auf dem Server.
Prinzip, der Server Gibt Ajax-Code oder IMG-Tag in den HTML-Code ein, und der Quellcode von IMG ist das Programm, das ausgeführt werden muss.
Vorteile: Einfache Implementierung, der Server muss keine Aufrufe ausführen
Nachteile: Während der Ausführung befindet sich der Browser immer im Ladezustand, daher ist diese Methode kein echter asynchroner Aufruf.
$.get("doRequest.php", { name: "fdipzone"} );
<img src="doRequest.php?name=fdipzone">
Verwenden Sie popen, um den Befehl auszuführen, Syntax:
// popen — 打开进程文件指针 resource popen ( string $command , string $mode )
Vorteile: Schnelle Ausführung
Nachteile: 1. Kann nur auf dieser Maschine ausgeführt werden
2. Sie können nicht viele Parameter übergeben
3. Viele Prozesse werden erstellt, wenn die Anzahl der Besuche hoch ist.
, um das Curl-Timeout festzulegen CURLOPT_TIMEOUT ist 1 (Minimum ist 1), daher muss der Client 1 Sekunde warten
pclose(popen('php /home/fdipzone/doRequest.php &', 'r'));
fsockopen ist das Beste. Der Nachteil ist, dass Sie den Header-Teil selbst spleißen müssen.
<?php $ch = curl_init(); $curl_opt = array( CURLOPT_URL, 'http://www.example.com/doRequest.php' CURLOPT_RETURNTRANSFER,1, CURLOPT_TIMEOUT,1 ); curl_setopt_array($ch, $curl_opt); curl_exec($ch); curl_close($ch); ?>
Hinweis: Während des Ausführungsprozesses wird die Clientverbindung getrennt oder die Verbindung läuft ab, was zu einer unvollständigen Ausführung führen kann. Sie müssen also
<?php $url = 'http://www.example.com/doRequest.php'; $param = array( 'name'=>'fdipzone', 'gender'=>'male', 'age'=>30 ); doRequest($url, $param); function doRequest($url, $param=array()){ $urlinfo = parse_url($url); $host = $urlinfo['host']; $path = $urlinfo['path']; $query = isset($param)? http_build_query($param) : ''; $port = 80; $errno = 0; $errstr = ''; $timeout = 10; $fp = fsockopen($host, $port, $errno, $errstr, $timeout); $out = "POST ".$path." HTTP/1.1\r\n"; $out .= "host:".$host."\r\n"; $out .= "content-length:".strlen($query)."\r\n"; $out .= "content-type:application/x-www-form-urlencoded\r\n"; $out .= "connection:close\r\n\r\n"; $out .= $query; fputs($fp, $out); fclose($fp); } ?>
Tipps: Informationen zur Einführung und Verwendung von fsockopen finden Sie in der „php“, die ich zuvor geschrieben habe „Verwenden Sie fsockopen GET/POST zum Senden von Formularen und Hochladen von Dateien“ und „PHP-HTTP-Anforderungsklasse, unterstützt GET, POST, Multipart/form-data“
In diesem Artikel wird erläutert, wie Sie die asynchrone Aufrufmethode von PHP verwenden , und mehr Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. Verwandte Empfehlungen:Über den Vergleich zwischen PHP-String-Komprimierungsmethoden
Über die PHP-Timer-Seitenlaufzeitüberwachung Relevante Einführung in Klassen
Einführung in die Methoden des PHP-Konstruktors, der eine unterschiedliche Anzahl von Parametern unterstützt
Das obige ist der detaillierte Inhalt vonSo rufen Sie eine Methode asynchron mit PHP auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!