引言
在php中可以使用curl调用远程接口,在调用完成以后, 能够获取相关的内容和信息,但有时候, 我们需要统计这个调用过程的时间, 尤其是在使用curl做并发测试的时候,这个统计就尤为重要,针对其中关于时间的几个统计项,在curl中给出的中文解释非常模糊, 且网上针对这方面的资源并不好找,我在这里做个说明。
图示
图解
1: 在curl中的几个比较重要的时间范围都已标记出来,如有错误,希望能够指正。
namelookup_time: 解析时间, 从开始直到解析完远程请求的时间;
connect_time: 建立连接时间,从开始直到与远程请求服务器建立连接的时间;
pretransfer_time: 从开始直到第一个远程请求接收到第一个字节的时间;
starttranster_time: 从开始直到第一个字节返回给curl的时间;
total_time: 从开始直到结束的所有时间。
2: 从上面就能很容易得到不同阶段的时间, 比如实际的远程服务器的处理数据的时间可以用starttransfer_time - pretransfer_time计算得到, 即图示中的第4个小段的时间, 若想得到本地与服务器传输数据所消耗的时间,则把时间段2与时间段5做加法即可, 而时间段2和5均很容易得到。
其他的两个时间:
1: redirect_time: 假如远程请求中又包含了重定向, 那么从开始直到重定向完成之后的那个远程请求的starttransfer_time就是这个时间(如有错误,请指正);
2: file_time: 远程获取文档的时间,如果无法获取,则返回值为“-1”;
PS:这两种时间均未做过实践,如果有知道的,欢迎讨论