Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Analyse, wie PHP die asynchrone Ausführung von Skripten implementiert
Das Beispiel in diesem Artikel beschreibt, wie man die asynchrone Ausführung von Skripten durch PHP-Programmierung implementiert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Die PHP-Sprache muss die Funktion fsockopen()
verwenden, um die asynchrone Ausführung des Skripts zu implementieren. Der Code lautet wie folgt
asynchrone Anforderungsfunktion (wenn der Debug-Parameter verwendet wird. Wenn true, wird er zum Debuggen verwendet. Wenn Sie das Debuggen aktivieren, können Sie die asynchrone Ausführung sehen, aber der asynchrone Effekt geht verloren)
main.php
<?php function request_by_fsockopen($url,$post_data=array(),$debug=false){ $url_array = parse_url($url); $hostname = $url_array['host']; $port = isset($url_array['port'])? $url_array['port'] : 80; @$requestPath = $url_array['path'] ."?". $url_array['query']; $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('&', $_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 = ''; while (!feof($fp)) { $html.=fgets($fp); } echo $html; } //-----------------调试代码区间----------------- fclose($fp); } $data=array('name'=>'guoyu','pwd'=>'123456'); $url='http://localhost/test/other.php'; request_by_fsockopen($url,$data,true);//
other.php
<?php header("content-type:text/html;charset=utf-8"); //error_reporting(0); //ini_set('html_errors',false); //ini_set('display_errors',false); $name = isset($_POST['name'])?$_POST['name']:''; $pwd = isset($_POST['pwd'])?$_POST['pwd']:''; echo $name.$pwd; echo 'success ok'; die; ?>
Verwendungsbeispiel:
[main .php-Hauptskriptdatei wird ausgeführt]
$data=array('name'=>'guoyu','pwd'=>'123456'); $url='http://localhost/test/other.php'; request_by_fsockopen($url,$data,true);//把应用B的用户表异步-同步数据
[Anleitung zur Ausführungsdatei other.php]
In other.php können Sie $_POST verwenden, um Empfangen Sie die von main.php übermittelten Parameter, um mit dem nächsten Schritt fortzufahren
Das obige ist der detaillierte Inhalt vonDetaillierte Analyse, wie PHP die asynchrone Ausführung von Skripten implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!