>백엔드 개발 >PHP 튜토리얼 >javascript - 这个php-curl类怎么用?

javascript - 这个php-curl类怎么用?

WBOY
WBOY원래의
2016-06-06 20:09:521057검색

我在网上找了一个类,但是没有使用示例代码,
请问这个类怎么用?

<code><?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;
}</code>

求大神给个示例代码
我想做多线程post

回复内容:

我在网上找了一个类,但是没有使用示例代码,
请问这个类怎么用?

<code><?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;
}</code>

求大神给个示例代码
我想做多线程post

<code>$urls=['wwww.baidu.com','www.google.com','www.qq.com'];


$post_data=['aa'=>'bb'];
$resp=curl($urls,$post_data);
print_r($resp);</code>

首先 这只是个函数
其次 怎么用代码注释里写的很清楚了,
/
PHP CURL 多线程 GET/POST
Email:szj1006@vip.qq.com/QQ:690204663
curl(array('url?get=data','url'),array('','post_data'));
*/
在用,如果用要类的话
推荐

  1. snoopy 不是通过curl来获取的

  2. [requests for php](http://requests.ryanmccue.info/)

多线程的curl推荐这个https://github.com/ares333/php-curlmulti

多线程curl推荐 https://github.com/actors315/SmartCurl.git

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.