Heim  >  Artikel  >  Backend-Entwicklung  >  So rufen Sie eine Methode asynchron mit PHP auf

So rufen Sie eine Methode asynchron mit PHP auf

jacklove
jackloveOriginal
2018-06-09 14:21:532112Durchsuche

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.

1. Verwenden Sie Ajax- und IMG-Tags

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

2. Verwenden Sie popen

Verwenden Sie popen, um den Befehl auszuführen, Syntax:

// popen — 打开进程文件指针 
resource popen ( string $command , string $mode )
rrree

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.

3. Verwenden Sie Curl

, um das Curl-Timeout festzulegen CURLOPT_TIMEOUT ist 1 (Minimum ist 1), daher muss der Client 1 Sekunde warten

pclose(popen(&#39;php /home/fdipzone/doRequest.php &&#39;, &#39;r&#39;));

4. Verwenden Sie fsockopen

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, &#39;http://www.example.com/doRequest.php&#39;
    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 = &#39;http://www.example.com/doRequest.php&#39;;
$param = array(
    &#39;name&#39;=>&#39;fdipzone&#39;,
    &#39;gender&#39;=>&#39;male&#39;,
    &#39;age&#39;=>30
);
doRequest($url, $param);
function doRequest($url, $param=array()){
    $urlinfo = parse_url($url);
    $host = $urlinfo[&#39;host&#39;];
    $path = $urlinfo[&#39;path&#39;];
    $query = isset($param)? http_build_query($param) : &#39;&#39;;
    $port = 80;
    $errno = 0;
    $errstr = &#39;&#39;;
    $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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn