Heim > Artikel > Backend-Entwicklung > Beispielcode für das Crawlen von PHP-Multithread-Webseiten
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-Anfragenusw. 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:
<?php $urls = array( 'http://www.php.cn/', 'http://www.baidu.com/', 'http://www.163.com/' ); // 设置要抓取的页面URL $save_to='/test.txt'; // 把抓取的代码写入该文件 $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!