ホームページ  >  記事  >  バックエンド開発  >  URL をバッチで開くための PHP Curl の実装コード (curl_multi クラス)

URL をバッチで開くための PHP Curl の実装コード (curl_multi クラス)

WBOY
WBOYオリジナル
2016-07-25 08:55:051866ブラウズ
  1. /*
  2. * テスト後、URL が 4 つ以上ある場合、curl_multi は Foreach ループよりも高速です。
  3. * by wc1217
  4. * edit: bbs.it-home.org
  5. * /
  6. classcurl_multi{
  7. //Curl ハンドル
  8. //private $curl_handle = null;
  9. //Web アドレス
  10. private $url_list = array()
  11. //パラメータ
  12. private $curl_setopt = array(
  13. 'CURLOPT_RETURTRANSFER' => ; 1, / / 結果は変数に返されます
  14. 'CURLOPT_HEADER' => 0, // HTTP ヘッダーが必要ですか?
  15. 'CURLOPT_FOLLOWLOCATION' => 0, //自動追跡
  16. ' CURLOPT_TIMEOUT' => 6//タイムアウト
  17. );
  18. function __construct($秒 = 30){
  19. set_time_limit($秒) }
  20. /*
  21. * セットURL
  22. * @list 配列
  23. * /
  24. public function setUrlList($list = array()){
  25. $this->url_list = $list; }
  26. /*
  27. * パラメータを設定
  28. * @cutPot 配列
  29. * /
  30. public function setOpt($cutPot ){
  31. $this->curl_setopt = $cutPot + $this->curl_setopt; }
  32. /*
  33. * 実行
  34. * @return array
  35. */
  36. public function exec( ){
  37. $mh =curl_multi_init( );
  38. foreach($this->url_list as $i => $url){
  39. $conn[$i] =curl_init($url); ->curl_setopt as $key = > $val){
  40. curl_setopt($conn[$i], preg_replace('/(CURLOPT_w{1,})/ie', '$0', $key), $val) ;
  41. }
  42. curl_multi_add_handle($mh , $conn[$i]);
  43. $active = false;
  44. $mrc =curl_multi_exec($mh, $active) ; mrc == CURLM_CALL_MULTI_PERFORM);
  45. while( $active and $mrc == CURLM_OK){
  46. if(curl_multi_select($mh) != -1){
  47. do{
  48. $mrc =curl_multi_exec($mh, $active);
  49. }while($mrc == CURLM_CALL_MULTI_PERFORM) ;
  50. }
  51. }
  52. $res = array();
  53. foreach($this->url_list as $i => $url){ [$i] =curl_multi_getcontent($conn[$i]) ;
  54. curl_close($conn[$i]); //使用後すぐにリソースを解放します
  55. curl_multi_close($mh);
  56. $res を返す
  57. }
  58. }
  59. ?>
  60. コードをコピーします
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。