Heim >Backend-Entwicklung >PHP-Tutorial >Mehrere gängige Methoden zur asynchronen Ausführung in PHP

Mehrere gängige Methoden zur asynchronen Ausführung in PHP

*文
*文Original
2018-05-29 10:56:2816091Durchsuche

In diesem Artikel werden hauptsächlich vier gängige Methoden zur asynchronen Ausführung von PHP vorgestellt, damit Sie die asynchronen Aufrufmethoden von PHP besser analysieren und kompetent beherrschen können. Ich hoffe, es hilft allen.

Dieser Artikel beschreibt die asynchrone PHP-Aufrufmethode und stellt sie Ihnen als Referenz zur Verfügung. Der spezifische Inhalt ist wie folgt
Der Client und der Server sind durch Das HTTP-Protokoll Für die Verbindungskommunikation initiiert der Client eine Anfrage, der Server führt nach Erhalt der Anfrage eine 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 Ajax- und img-Tag
. Fügen Sie Ajax-Code oder img-Tag in den vom Server zurückgegebenen HTML-Code ein.
Vorteile: Einfache Implementierung, der Server muss keine Aufrufe ausführen
Nachteile: Während der Ausführung wird der Der Browser befindet sich 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 Befehle auszuführen, Syntax:

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

Vorteile: Schnelle Ausführungsgeschwindigkeit
Nachteile:

  • 1). Maschine

  • 2). Sie können nicht viele Parameter übergeben

  • 3). . Wenn die Anzahl der Besuche hoch ist, werden viele Prozesse erstellt

3. Setzen Sie das Curl-Timeout CURLOPT_TIMEOUT auf 1 (Das Minimum ist 1), daher muss der Client 1 Sekunde warten Den Header-Teil selbst erstellen.

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

verwandte Empfehlung:

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

Swoole verwenden, um Webseiten asynchron zu erfassen und praktisch zu teilen

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

thinkphp5 und swoole werden mithilfe von SMTP implementiert. Beispiele für asynchrones Massenmailing

Einführung in Swoole-Entwicklungspunkte

Das obige ist der detaillierte Inhalt vonMehrere gängige Methoden zur asynchronen Ausführung in PHP. 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