在test.html
中,demo
字仅包含在内。
demo
curl.php
<php?
//init curl
$chArr=[];
for($i=0;$i<500;$i++){
$chArr[$i]=curl_init("http://dev.site/test.html");
curl_setopt($chArr[$i],CURLOPT_RETURNTRANSFER,1);
}
//create curl
$mh = curl_multi_init();
foreach($chArr as $k => $ch){
curl_multi_add_handle($mh,$ch);
}
$running = null;
do{
curl_multi_exec($mh,$running);
}while($running > 0);
//start multi-thread
foreach($chArr as $k => $ch){
$result[$k]= curl_multi_getcontent($ch);
//and echo out the result
echo "$result[$k]\n"
curl_multi_remove_handle($mh,$ch);
}
curl_multi_close($mh);
我已经设置了500个请求,大约10秒后得到了输出,并且在处理期间没有响应
是否有显示结果并给我反馈,因为每个卷曲请求都已完成,如下所示?
PS:如果PHP很难这样做,我可以接受Nodejs,Python等。
答案 0 :(得分:0)
您可能需要使用ob_start()和ob_end_flush()。
ob_start()打开输出缓冲,所以在回显输出之前将它放在for循环的顶部。
和
ob_end_flush()发送输出缓冲区并关闭输出缓冲。
所以你的代码看起来像这样,
foreach($chArr as $k => $ch){
ob_start();
$result[$k]= curl_multi_getcontent($ch);
//and echo out the result
echo "$result[$k]\n"
ob_end_flush();
curl_multi_remove_handle($mh,$ch);
}