| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
ngww
10年前发布

PHP CURL 多线程 GET/POST 类

   <?php  /****************************************************************                     PHP CURL 多线程 GET/POST       curl(array('url?get=data','url'),array('','post_data'));  *****************************************************************/  function curl($urls,$post) {      $queue = curl_multi_init();      $map = array();      foreach ($urls as $key => $url) {          $ch = curl_init();          curl_setopt($ch, CURLOPT_URL, $url);          curl_setopt($ch, CURLOPT_TIMEOUT, 30);          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);          curl_setopt($ch, CURLOPT_POSTFIELDS, $post[$key]);          curl_setopt($ch, CURLOPT_HEADER, 0);          curl_setopt($ch, CURLOPT_NOSIGNAL, true);          curl_multi_add_handle($queue, $ch);          $map[(string) $ch] = $url;      }      $responses = array();      do {          while (($code = curl_multi_exec($queue, $active)) == CURLM_CALL_MULTI_PERFORM) ;          if ($code != CURLM_OK) { break; }          while ($done = curl_multi_info_read($queue)) {              $error = curl_error($done['handle']);              $results = curl_multi_getcontent($done['handle']);              $responses[$map[(string) $done['handle']]] = compact('error', 'results');              curl_multi_remove_handle($queue, $done['handle']);              curl_close($done['handle']);          }          if ($active > 0) {              curl_multi_select($queue, 0.5);          }      } while ($active);      curl_multi_close($queue);      return $responses;  }