常规的curl获取请求php,为什么它很慢


Regular curl get request php , why it's very slow?

我正在使用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 语言做了这个,我记得它的速度要快得多。有什么想法让我的请求更快吗?也许只能从页面中获取文本?

开始测量一些东西。您可以分析总请求时间...

$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。

测量,你会发现问题,尽管你可能对它做任何事情,也可能不做任何事情。