【发布时间】:2014-01-13 23:41:51
【问题描述】:
我正在使用 PHP 的 cURL 和 explode 方法从 Reddit 帖子页面远程提取赞成票。
这很慢,从按钮点击到数据返回之间需要几秒钟,我的问题是,我怎样才能加快速度?我在哪里可以优化这个? cURL 获取 URL 是慢还是爆炸页面慢?
以下是我如何定位 upvote div 并获取其内容:
function between($src, $start, $end){
$txt = explode($start, $src);
$txt2 = explode($end, $txt[1]);
return trim($txt2[0]);
}
$title = between($data, '<div class="score unvoted">','</div>');
这是我用来从 Reddit 获取页面数据的函数。
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
【问题讨论】:
-
大部分时间可能是 cURL。使用带有时间戳的 echo 进行一些分析。
-
分析?你能详细说明一下吗?谢谢。
-
在开始之前回显时间,然后在卷曲之后回显,最后在爆炸之后回显。比较这些时间戳会告诉你大部分时间都花在了哪里。
-
如果大部分时间都花在卷曲上(我怀疑),那么您很可能受到带宽的限制,而且您无能为力。获取远程页面是一个缓慢的过程。
-
@JacksonGariety 您可以尝试使用 IP 地址而不是域名,因为 DNS 查找可能需要“一些”时间...
标签: php optimization curl explode