首页 > 开发 > PHP > 正文

PHP CURL 多线程操作代码实例

2024-05-04 23:35:13
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP CURL 多线程操作代码实例,本文直接给出实现代码,需要的朋友可以参考下

使用方法:

 

 
  1. $urls = array("http://baidu.com""http://www.vevb.com""http://google.com"); 
  2. $mp = new MultiHttpRequest($urls); 
  3. $mp->start(); 

 

 
  1. /* 
  2. * Curl 多线程类 
  3. * 使用方法: 
  4. * ======================== 
  5. $urls = array("http://baidu.com", "http://dzone.com", "http://google.com"); 
  6. $mp = new MultiHttpRequest($urls); 
  7. $mp->start(); 
  8. * ======================== 
  9. */ 
  10. class MultiHttpRequest { 
  11. public $urls = array(); 
  12. public $curlopt_header = 1; 
  13. public $method = "GET"
  14.  
  15. function __construct($urls = false) { 
  16. $this->urls = $urls
  17.  
  18. function set_urls($urls) { 
  19. $this->urls = $urls
  20. return $this
  21.  
  22. function is_return_header($b) { 
  23. $this->curlopt_header = $b
  24. return $this
  25.  
  26. function set_method($m) { 
  27. $this->medthod = strtoupper($m); 
  28. return $this
  29.  
  30. function start() { 
  31. if(!is_array($this->urls) or count($this->urls) == 0){ 
  32. return false; 
  33. $curl = $text = array(); 
  34. $handle = curl_multi_init(); 
  35. foreach($this->urls as $k=>$v){ 
  36. $curl[$k] = $this->add_handle($handle$v); 
  37.  
  38. $this->exec_handle($handle); 
  39. foreach($this->urls as $k=>$v){ 
  40. curl_multi_getcontent($curl[$k]); 
  41. echo $curl[$k]."/n"
  42. //$text[$k] = curl_multi_getcontent($curl[$k]); 
  43. //echo $text[$k], "/n/n"; 
  44. curl_multi_remove_handle($handle$curl[$k]); 
  45. curl_multi_close($handle); 
  46.  
  47. private function add_handle($handle$url) { 
  48. $curl = curl_init(); 
  49. curl_setopt($curl, CURLOPT_URL, $url); 
  50. curl_setopt($curl, CURLOPT_HEADER, $this->curlopt_header); 
  51. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  52. curl_multi_add_handle($handle$curl); 
  53. return $curl
  54.  
  55. private function exec_handle($handle) { 
  56. $flag = null; 
  57. do { 
  58. curl_multi_exec($handle$flag); 
  59. while ($flag > 0); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表