我试着让这个代码工作五个小时:
$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)); 它总是只给我数组键,但没有数据。我的错误在哪里?
发布于 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);
现在它应该像你的魅力一样工作!
https://stackoverflow.com/questions/20915108
复制相似问题