使用PHP Curl计算下载时间

时间:2010-08-18 03:52:40

标签: php curl

我正在使用PHP Curl来衡量网页的下载时间。我知道这不是浏览器实际下载时间的良好表示;但我正试图尽可能使用这种方法。

我的网页有3个与之关联的文件

  1. 的index.html
  2. my_pic.gif
  3. 的style.css
  4. 我正在对每个文件进行卷曲,然后将下载时间加在一起以获得总下载时间。

    我的问题是我应该如何进行计算以尽可能接近模拟浏览器下载?

    测量下载时间的Curl选项是:

    CURLINFO_TOTAL_TIME
    CURLINFO_NAMELOOKUP_TIME
    CURLINFO_CONNECT_TIME
    CURLINFO_PRETRANSFER_TIME
    CURLINFO_STARTTRANSFER_TIME
    

    浏览器是否会针对上述3个文件中的每个文件执行所有这些步骤?

    例如:

    假设我在index.html上做了CURLINFO_TOTAL_TIME。

    我是否应该在my_pic.gif和style.css上进行CURLINFO_TOTAL_TIME?然后将这些数字添加到index.html上的CURLINFO_TOTAL_TIME。

    OR

    我应该在my_pic.gif和style.css上执行CURLINFO_TOTAL_TIME减去CURLINFO_STARTTRANSFER_TIME吗?然后将这些数字添加到index.html上的CURLINFO_TOTAL_TIME。

2 个答案:

答案 0 :(得分:5)

我个人会这样做:

$t1 = microtime(true);
// do all the curl requests
$t2 = microtime(true) - $t1;
echo $t2;

答案 1 :(得分:0)

获得准确的结果将很困难,因为每个浏览器处理它的方式略有不同。

每个域只进行一次名称查找,因此如果my_pic.gif和style.css驻留在index.html的同一域查找中。
其次,大多数浏览器会同时请求多个文件,因此会同时请求my_pic.gif和style.cs,只会计算更长的下载时间。当然,更大的文件需要考虑用户电缆的速度,但这不应该是问题。

一个好的估计应该是:TOTAL_TIME(index.html)+ max(TOTAL_TIME(my_pic.gif) - NAMELOOKUP_TIME(my_pic.gif),TOTAL_TIME(style.css) - NAMELOOKUP_TIME(style.css))

如果您想测试下载真正需要多长时间,可以获取firefox扩展YSLOW。它会告诉你整个页面下载了多长时间,并绘制了一个很好的图表,说明了下载了哪个元素以及花了多长时间。