我使用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中做到了这一点,我记得它的速度要快得多。任何想法让我的请求更快?也许只能从页面获取文本?
答案 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。
测量并且您会发现问题,尽管您可能会或可能不会对此做任何事情。