首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过curl_multi从许多urls获取JSON数据

通过curl_multi从许多urls获取JSON数据
EN

Stack Overflow用户
提问于 2014-01-04 00:18:34
回答 1查看 1.1K关注 0票数 0

我试着让这个代码工作五个小时:

代码语言:javascript
复制
$url_list = array(
    'https://btc-e.com/api/2/btc_usd/ticker',
    'https://btc-e.com/api/2/btc_eur/ticker',
    'https://btc-e.com/api/2/btc_rur/ticker',
    'https://btc-e.com/api/2/ltc_btc/ticker',
    'https://btc-e.com/api/2/ltc_usd/ticker',
    'https://btc-e.com/api/2/ltc_rur/ticker',
    'https://btc-e.com/api/2/usd_rur/ticker',
    'https://btc-e.com/api/2/eur_usd/ticker',
    'https://btc-e.com/api/2/nmc_btc/ticker',
    'https://btc-e.com/api/2/nvc_btc/ticker',
    'https://btc-e.com/api/2/trc_btc/ticker',
    'https://btc-e.com/api/2/ppc_btc/ticker',
    'https://btc-e.com/api/2/ftc_btc/ticker'
);

function multi_thread_request($nodes){ 
    $mh = curl_multi_init(); 
    $curl_array = array();
    $res = array();

    for($i=0;$i<=12;$i++){
        $curl_array[$i] = curl_init($url_list[$i]); 
        curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true); 
        curl_multi_add_handle($mh, $curl_array[$i]); 
    } 
    $running = NULL; 
    do { 
        //usleep(10000); 
        curl_multi_exec($mh,$running); 
    } while($running > 0); 


    for($i=0;$i<=12;$i++){
        $res[$i] = curl_multi_getcontent($curl_array[$i]);
    } 

    for($i=0;$i<=12;$i++){ 
        curl_multi_remove_handle($mh, $curl_array[$i]); 
    } 
    curl_multi_close($mh);        
    return $res; 
} 
print_r(multi_thread_request($url_list)); 

它总是只给我数组键,但没有数据。我的错误在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-04 10:30:16

在初始化curl时使用$nodes而不是$url_list。或者在函数中为$url_list使用全局。

$curl_array[$i] = curl_init($nodes[$i]);

您的urls有https,所以添加这个curl选项来处理这个问题。

curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, false);

现在它应该像你的魅力一样工作!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20915108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档