Maison  >  Article  >  développement back-end  >  Exemple de code d'exploration de pages Web multithread PHP

Exemple de code d'exploration de pages Web multithread PHP

怪我咯
怪我咯original
2017-07-11 14:47:321095parcourir

Le multi-threading (anglais : multithreading) fait référence à la technologie qui réalise l'exécution simultanée de plusieurs threads à partir d'un logiciel ou d'un matériel. Les ordinateurs dotés de capacités multithread disposent d'un support matériel qui leur permet d'exécuter plusieurs threads en même temps, améliorant ainsi les performances globales de traitement. Les systèmes dotés de cette capacité incluent des multiprocesseurs symétriques, des processeurs multicœurs et des processeurs multithreading au niveau de la puce ou multithreading simultané. [1] Dans un programme, ces fragments de programme exécutés indépendamment sont appelés « Threads », et le concept de programmation qui les utilise est appelé « Multithreading ». Les ordinateurs dotés de capacités multithreading peuvent exécuter plusieurs threads (traduit par « thread » à Taiwan) en même temps grâce à la prise en charge matérielle, améliorant ainsi les performances globales de traitement. PHP peut utiliser les fonctions Curl pour effectuer diverses opérations de transfert de fichiers, telles que la simulation d'un navigateur pour envoyer GET,

requête POST

et ainsi de suite. Limité par le fait que le langage PHP lui-même ne prend pas en charge le multi-threading, l'efficacité du développement de programmes d'exploration n'est pas élevée. À l'heure actuelle, il est souvent nécessaire d'utiliser Curl Multi Functions, qui peut réaliser des opérations simultanées. accès multithread à plusieurs adresses URL. Étant donné que Curl Multi Function est si puissant, pouvez-vous utiliser Curl Multi Functions pour écrire des téléchargements de fichiers multithread simultanés. Bien sûr, vous pouvez le faire :

Code 1 : Écrivez le code obtenu directement dans un fichier


Le code est le suivant :

Code 2 : Mettez le code obtenu dans la

variable
<?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); 
?>
, puis écrivez-le dans un fichier

Le code est le suivant :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn