Heim > Artikel > Backend-Entwicklung > PHP-Codebeispiel mit Curl zur Simulation von Multithread-Anfragen
Der Inhalt dieses Artikels befasst sich mit dem Codebeispiel für die Verwendung von Curl zur Simulation von Multithreading zum Senden von Anfragen. Ich hoffe, dass es für Sie hilfreich ist.
Die Ausführung jeder PHP-Datei erfolgt Single-Threaded, aber PHP selbst kann auch einige andere Technologien verwenden, um Multithread-Parallelität zu erreichen, wie zum Beispiel die Verwendung des PHP-FPM-Prozesses Simulieren Sie Multithread-Sendeanfragen. Das Curl-Multithreading von PHP erhält Inhalte durch kontinuierlichen Aufruf von curl_multi_exec. Hier ist eine Demo zur Simulation eines gleichzeitigen Curl-Multithreading-Vorgangs.
//设置缓冲为0(也可以去php.ini设置) ini_set('output_buffering', 0); //打开输出缓冲区 ob_start(); //设置一个空数组 $curl_Arr=[]; //这里模拟20次请求 for($i=0;$i<20;$i++){ //开启curl连接 $curl_Arr[$i]=curl_init("http://XXXX/test.php"); //CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE; curl_setopt($curl_Arr[$i],CURLOPT_RETURNTRANSFER,1); } //创建批处理cURL句柄 $mh = curl_multi_init(); foreach($curl_Arr as $k => $ch){ //curl句柄入栈增加 curl_multi_add_handle($mh,$ch); } $active = null; while(count($curl_Arr)>0){ //发起curl_multi请求 @curl_multi_exec($mh,$active); foreach($curl_Arr as $k => $ch){ //获取句柄的返回值 if($result[$k]= curl_multi_getcontent($ch)){ //输出结果 echo "$result[$k]\n"; ob_flush(); //把被释放的数据发送到浏览器 flush(); //关闭该句柄 curl_multi_remove_handle($mh,$ch); unset($curl_Arr[$k]); } } } //关闭ouput_buffering机制 ob_end_flush(); //关闭"curl_mulit"句柄 curl_multi_close($mh);
Ich habe eine angeforderte PHP-Seite auf dem Server erstellt und sie test.php mit folgendem Inhalt benannt:
1 sleep(10); 2 echo 'seccess';exit;
bedeutet, zehn Sekunden auf die folgende Aussage zu warten.
Dann habe ich das Programm auf der Befehlszeile ausgeführt und das Ergebnis war wie folgt:
Im obigen Code wird curl_multi_getcontent durch Durchlaufen des $ aufgerufen Curl_Arr-Array zur Abfrage, ob Daten vorhanden sind. Wenn Daten vorhanden sind, werden Elemente ausgegeben und gelöscht, bis die Anzahl der Elemente im Array $curl_Arr 0 erreicht.
Diese simulierte Multi-Thread-Implementierung kann diese Funktion mithilfe der Curl_multi-Funktionsreihe von Curl erreichen. Was die Einführung in die Verwendung dieser Funktionsreihe betrifft, können Sie auf Baidu viel suchen. Auf eine Erklärung wird hier verzichtet.
Das obige ist der detaillierte Inhalt vonPHP-Codebeispiel mit Curl zur Simulation von Multithread-Anfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!