Heim > Artikel > Backend-Entwicklung > Beispielanalyse von foreach in Kombination mit Curl, um Multithreading in PHP zu erreichen
Dieser Artikel stellt hauptsächlich die Methode von foreach in Kombination mit Curl vor, um Multithreading in PHP zu realisieren. Er analysiert die Prinzipien und Implementierungstechniken von foreach-Anweisungen in Kombination mit Curl-Schleifenaufrufen, um Multithreading in Form von Freunden zu simulieren Bedarf kann darauf verweisen
Multithreading wird von PHP nicht unterstützt, aber wir können foreach für Pseudo-Multithreading verwenden, aber die Geschwindigkeit dieses Pseudo-Multithreadings ist nicht unbedingt schneller als die von Single Schauen wir uns ein Beispiel an.
Wenn wir die foreach-Anweisung verwenden, um Bild-URLs zu durchlaufen und alle Bilder lokal über CURL zu speichern, tritt das Problem auf, dass nur ein Bild erfasst werden kann fasst die Methode zum Kombinieren von foreach und CURL zusammen, um mehrere URL-Anfragen zu stellen
Methode 1: Schleifenanforderung
$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) { $curlPost=$v.'?f=传入参数'; $ch = curl_init($curlPost) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回 $data = curl_exec($ch) ; echo $k.'##:'.$data.'<br>'; } curl_close($ch);
Was im obigen Code besonders beachtet werden muss, ist, dass curl_close in foreach platziert werden muss. Wenn es außerhalb des Endes der Schleife platziert wird, gibt es, wie oben erwähnt, mehrere IMGURLs und es kann nur eine URL erfasst werden
Methode 2: Multithread-Schleife
<?php multi_threads_request($nodes){ $mh = curl_multi_init(); $curl_array = array(); foreach($nodes as $i => $url) { $curl_array[$i] = curl_init($url); curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($mh, $curl_array[$i]); } $running = NULL; do { usleep(10000); curl_multi_exec($mh,$running); } while($running > 0); $res = array(); foreach($nodes as $i => $url) { $res[$url] = curl_multi_getcontent($curl_array[$i]); } foreach($nodes as $i => $url){ curl_multi_remove_handle($mh, $curl_array[$i]); } curl_multi_close($mh); return $res; } print_r(multi_threads_request(array( 'http://www.jb51.net', 'http://tools.jb51.net', ));
Hier verwenden wir hauptsächlich curl_multi_init(), um mehrere URL-Anfragen zu implementieren. Da PHP selbst kein Multithreading unterstützt, ist die Pseudo-Multithreading-Geschwindigkeit möglicherweise nicht schneller als ein einzelner Thread.
Zusammenfassung: Das Obige ist das Ganze Ich hoffe, dass der Inhalt dieses Artikels für das Lernen aller hilfreich sein wird.
Verwandte Empfehlungen:
phpLesen Sie die serverseitige Datei und zeigen Sie sie auf der Webseiteninstanz an
Verwenden Sie php, um mit dem Server und der Web-Front-End-Schnittstelle zu interagieren
Das obige ist der detaillierte Inhalt vonBeispielanalyse von foreach in Kombination mit Curl, um Multithreading in PHP zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!