set_time_limit(0);
$ch = curl_init('http://www.tibia.com/community/?subtopic=highscores&world=Antica');
curl_setopt($ch, CURLOPT_RANGE, '0-999');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
echo $data = curl_exec($ch);//get curl response
curl_close($ch);
示例输出是(每次点击刷新按钮时略有不同): 当我注释掉CURLOPT_RANGE
<í]kSã8ºþNÕüOÍÕr™&amp;™,³ÜÒ3{æ¥8J¢Æ±2¾é=ûßÏ«<Û±BãYÜåž,[¥÷òHz%[ÎØ>XÖÆàÐG=
编辑2:错误消息是:“处理内容未解码时出错:无效距离太远”
答案 0 :(得分:3)
你正在获取gzip压缩内容。您应该明确声明要返回纯HTML。您可以添加以下选项:
curl_setopt($ch, CURLOPT_ENCODING, 'deflate');
答案 1 :(得分:2)
我从未使用过CURLOPT_RANGE。你需要使用它吗?
gzip仅在从0开始时起作用的原因是那里有信息需要解压缩内容。如果你必须使用Range,那么你应该捕获每个范围的数据并将其合并然后解压缩。
编辑:
您在一些评论中提到使用Range来获取一些数据以节省带宽。我使用Firebug检查了页面,它是&lt; 10KB。所有的图像几乎是500k。你已经节省了很多,除非你使用拨号上网10kb,它什么都没有。不要担心使用Range和组合块,只需让cURL处理gzip。