定期卷曲获取请求php,为什么它很慢?

时间:2014-12-01 20:30:50

标签: php http curl

我使用cURL发出HTTP请求:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "some-site-without-many-photos"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 

我需要循环执行此请求最多200次并获取数据。我循环了10次,需要超过25秒......这是正常的吗?该计划非常缓慢。几年前,我在C中做到了这一点,我记得它的速度要快得多。任何想法让我的请求更快?也许只能从页面获取文本?

1 个答案:

答案 0 :(得分:0)

开始测量某事。您可以描述总请求时间......

$start = gettimeofday(true);
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "some-site-without-many-photos"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
$end = gettimeofday(true);

$request_time = $end - $start;

或者,您可以只测量DNS查找时间以查看是否存在问题:

$start = gettimeofday(true);
gethostbyname("some-site");
$end = gettimeofday(true);

$request_time = $end - $start;

通过200个左右的请求循环播放这个请求并单独查看时间(检测到一个请求的问题)或汇总。

如果您正在跨不同主机请求页面,那么您正在设置并拆除每个请求的TCP连接,这可能需要500毫秒,具体取决于您的RTT。

测量并且您会发现问题,尽管您可能会或可能不会对此做任何事情。