PHP CURL 多线程 GET/POST 类

来源:http://www.oschina.net/code/snippet_1475115_44902

<?php
/****************************************************************
PHP CURL 多线程 GET/POST
Email:szj1006@vip.qq.com/QQ:690204663
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 ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值