Heim > Backend-Entwicklung > PHP-Tutorial > 4 gängige Arten der asynchronen Ausführung in PHP

4 gängige Arten der asynchronen Ausführung in PHP

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-07-29 09:09:16
Original
827 Leute haben es durchsucht

Dieser Artikel beschreibt die asynchrone PHP-Aufrufmethode und teilt sie Ihnen als Referenz mit. Der spezifische Inhalt ist wie folgt:
Der Client und der Server kommunizieren über das HTTP-Protokoll. Der Client initiiert eine Anfrage . Nach Erhalt der Anfrage führt der Server die Verarbeitung durch und gibt das Verarbeitungsergebnis zurück.
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 nach der Verarbeitung der vom Client benötigten Daten zurück und führt dann zeitaufwändige Vorgänge asynchron auf dem Server aus.
1. Verwenden Sie das Prinzip Ajax und img-Tag
, fügen Sie Ajax-Code oder img-Tag in den vom Server zurückgegebenen 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 diese Methode zählt nicht. Echter asynchroner Aufruf.

$.get("doRequest.php", { name: "fdipzone"} );
<img src="doRequest.php&#63;name=fdipzone">
Nach dem Login kopieren

2. Verwenden Sie popen
Verwenden Sie popen, um Befehle auszuführen, Syntax:

// popen — 打开进程文件指针  
resource popen ( string $command , string $mode )
pclose(popen('php /home/fdipzone/doRequest.php &', 'r'));
Nach dem Login kopieren

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 der Datenverkehr hoch ist

3. Verwenden Sie curl
, um das Curl-Timeout CURLOPT_TIMEOUT auf 1 zu setzen (das Minimum ist 1), sodass der Client 1 Sekunde warten muss

<&#63;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); 
&#63;>
Nach dem Login kopieren

4. Verwenden Sie fsockopen
fsockopen ist am besten. Der Nachteil besteht darin, dass Sie den Header-Teil selbst verbinden müssen.

<&#63;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); 
} 
   
?>
Nach dem Login kopieren

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, daher müssen Sie
hinzufügen

ignore_user_abort(true); // 忽略客户端断开 
set_time_limit(0);    // 设置执行不超时
Nach dem Login kopieren

Das Obige ist die detaillierte Einführung der asynchronen Aufrufmethode von PHP. Ich hoffe, dass es für das Lernen aller hilfreich sein wird.

Das Obige stellt vier gängige Methoden der asynchronen PHP-Ausführung vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage