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 POSTet 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( '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); ?>
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!