Heim > Backend-Entwicklung > PHP-Tutorial > So implementieren Sie die asynchrone Ausführung von Skripten in PHP

So implementieren Sie die asynchrone Ausführung von Skripten in PHP

墨辰丷
Freigeben: 2023-03-26 17:14:02
Original
1997 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Methode der asynchronen Ausführung von Skripten durch PHP-Programmierung vor und analysiert die asynchronen Aufruf- und Ausführungsfähigkeiten von Skripten, die von PHP mithilfe von fsockopen() implementiert werden, in Form von Beispielen

Die Details lauten wie folgt:

PHP-Sprache muss die Funktion fsockopen() verwenden, um die asynchrone Ausführung des Skripts zu implementieren. Der Code lautet wie folgt:

Asynchrone Anforderungsfunktion (wenn die Der Debug-Parameter ist wahr, er wird zum Debuggen verwendet. Sehen Sie sich die asynchrone Ausführung an, verlieren Sie jedoch den asynchronen Effekt)

main.php

<?php
function request_by_fsockopen($url,$post_data=array(),$debug=false){
  $url_array = parse_url($url);
  $hostname = $url_array[&#39;host&#39;];
  $port = isset($url_array[&#39;port&#39;])? $url_array[&#39;port&#39;] : 80;
  @$requestPath = $url_array[&#39;path&#39;] ."?". $url_array[&#39;query&#39;];
  $fp = fsockopen($hostname, $port, $errno, $errstr, 10);
  if (!$fp) {
    echo "$errstr ($errno)";
    return false;
  }
  $method = "GET";
  if(!empty($post_data)){
    $method = "POST";
  }
  $header = "$method $requestPath HTTP/1.1\r\n";
  $header.="Host: $hostname\r\n";
  if(!empty($post_data)){
    $_post = strval(NULL);
    foreach($post_data as $k => $v){
    $_post[]= $k."=".urlencode($v);//必须做url转码以防模拟post提交的数据中有&符而导致post参数键值对紊乱
    }
    $_post = implode(&#39;&&#39;, $_post);
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";//POST数据
    $header .= "Content-Length: ". strlen($_post) ."\r\n";//POST数据的长度
    $header.="Connection: Close\r\n\r\n";//长连接关闭
    $header .= $_post; //传递POST数据
  }else{
    $header.="Connection: Close\r\n\r\n";//长连接关闭
  }
  fwrite($fp, $header);
  //-----------------调试代码区间-----------------
  //注如果开启下面的注释,异步将不生效可是方便调试
  if($debug){
  $html = &#39;&#39;;
  while (!feof($fp)) {
  $html.=fgets($fp);
  }
  echo $html;
  }
  //-----------------调试代码区间-----------------
  fclose($fp);
}
$data=array(&#39;name&#39;=>&#39;guoyu&#39;,&#39;pwd&#39;=>&#39;123456&#39;);
$url=&#39;http://localhost/test/other.php&#39;;
request_by_fsockopen($url,$data,true);//
Nach dem Login kopieren

other.php

<?php
header("content-type:text/html;charset=utf-8");
//error_reporting(0);
//ini_set(&#39;html_errors&#39;,false);
//ini_set(&#39;display_errors&#39;,false);
$name = isset($_POST[&#39;name&#39;])?$_POST[&#39;name&#39;]:&#39;&#39;;
$pwd = isset($_POST[&#39;pwd&#39;])?$_POST[&#39;pwd&#39;]:&#39;&#39;;
echo $name.$pwd;
echo &#39;success ok&#39;;
die;
?>
Nach dem Login kopieren

Verwendungsbeispiel:

[main.php-Hauptskriptdatei wird ausgeführt]

$data=array(&#39;name&#39;=>&#39;guoyu&#39;,&#39;pwd&#39;=>&#39;123456&#39;);
$url=&#39;http://localhost/test/other.php&#39;;
request_by_fsockopen($url,$data,true);//把应用B的用户表异步-同步数据
Nach dem Login kopieren

[Anleitung zur Ausführungsdatei other.php]

In other.php können Sie $_POST verwenden, um die von main.php übermittelten Parameter zu empfangen Fahren Sie mit dem nächsten Schritt fort

Verwandte Empfehlungen:

Wie PHP asynchrones Skript implementiertAusführungsmethodenspezifische Analyse

PHP-Sprache implementiert Skript asynchron Ausführung

PHP-SprachimplementierungSkript asynchronAusführung_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die asynchrone Ausführung von Skripten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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