Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für das Crawlen von PHP-Multithread-Webseiten

Beispielcode für das Crawlen von PHP-Multithread-Webseiten

怪我咯
怪我咯Original
2017-07-11 14:47:321095Durchsuche

Multithreading (englisch: Multithreading) bezieht sich auf die Technologie, die die gleichzeitige Ausführung mehrerer Threads von Software oder Hardware realisiert. Computer mit Multithreading-Fähigkeiten verfügen über Hardwareunterstützung, die es ihnen ermöglicht, mehr als einen Thread gleichzeitig auszuführen und so die Gesamtverarbeitungsleistung zu verbessern. Zu den Systemen mit dieser Fähigkeit gehören symmetrische Multiprozessoren, Multicore-Prozessoren und Multithreading- oder simultane Multithreading-Prozessoren auf Chipebene. [1] In einem Programm werden diese unabhängig voneinander ablaufenden Programmfragmente „Threads“ genannt, und das Konzept der Programmierung mit ihnen wird „Multithreading“ genannt. Computer mit Multithreading-Fähigkeiten können aufgrund der Hardwareunterstützung mehr als einen Thread (in Taiwan als „Thread“ übersetzt) ​​gleichzeitig ausführen und so die Gesamtverarbeitungsleistung verbessern. PHP kann Curl-Funktionen verwenden, um verschiedene Dateiübertragungsvorgänge durchzuführen, z. B. die Simulation eines Browsers zum Senden von GET-,

POST-Anfragen

usw. Eingeschränkt durch die Tatsache, dass die PHP-Sprache selbst kein Multithreading unterstützt, ist die Effizienz bei der Entwicklung von Crawler-Programmen nicht hoch. Derzeit ist es häufig erforderlich, Curl-Multifunktionen zu verwenden, die gleichzeitig ausgeführt werden können Multithread-Zugriff auf mehrere URL-Adressen. Können Sie Curl Multi Functions verwenden, um gleichzeitige Multithread-Dateidownloads zu schreiben? Mein Code ist unten angegeben:

Code 1: Schreiben Sie den erhaltenen Code direkt in eine Datei



Der Code lautet wie folgt:

Code 2: Geben Sie den erhaltenen Code in die
<?php 
$urls = array( 
&#39;http://www.php.cn/&#39;, 
&#39;http://www.baidu.com/&#39;, 
&#39;http://www.163.com/&#39; 
); // 设置要抓取的页面URL 

$save_to=&#39;/test.txt&#39;; // 把抓取的代码写入该文件 

$st = fopen($save_to,"a"); 
$mh = curl_multi_init(); 

foreach ($urls as $i => $url) { 
$conn[$i] = curl_init($url); 
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); 
curl_setopt($conn[$i], CURLOPT_HEADER ,0); 
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60); 
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 设置将爬取的代码写入文件 
curl_multi_add_handle ($mh,$conn[$i]); 
} // 初始化 

do { 
curl_multi_exec($mh,$active); 
} while ($active); // 执行 

foreach ($urls as $i => $url) { 
curl_multi_remove_handle($mh,$conn[$i]); 
curl_close($conn[$i]); 
} // 结束清理 

curl_multi_close($mh); 
fclose($st); 
?>
Variable

ein und schreiben Sie ihn dann in eine Datei
Der Code lautet wie folgt:

Das obige ist der detaillierte Inhalt vonBeispielcode für das Crawlen von PHP-Multithread-Webseiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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