Beispielanalyse von foreach in Kombination mit Curl, um Multithreading in PHP zu erreichen

墨辰丷
Freigeben: 2023-03-28 22:14:01
Original
1582 Leute haben es durchsucht

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.&#39;##:&#39;.$data.&#39;<br>&#39;;
}
curl_close($ch);
Nach dem Login kopieren

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(
 &#39;http://www.jb51.net&#39;,
 &#39;http://tools.jb51.net&#39;,
));
Nach dem Login kopieren

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

Verwenden Sie php, um eine automatische Anmeldung zu realisieren Speichermechanismus innerhalb einer Woche

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!