+ -
当前位置:首页 → 问答吧 → 对curl的常用函数的测试与分析

对curl的常用函数的测试与分析

时间:2007-06-27

来源:互联网

今天昨天有人问了一个关于curl的问题
开始我回复一个由他的提供的源代码精简而成的函数
后来在他的提醒下,发现这个只能是方便调用,
但不能提高速度
因为当时只是手写代码没有去测试所以不知道有没有问题
今天放假在家就做了一下测试
测试代码跟结果如下
复制PHP内容到剪贴板
PHP代码:

<?
$mt_1=ReturnMicrotime();
$curl=curl_init($url);//
curl_setopt ($curl, CURLOPT_HEADER, "Accept-Encoding: gzip, deflate");
For($i=0; $i<10; $i++)
{
    curl_exec($curl);
}
$mt_2=ReturnMicrotime();
$mt=$mt_2-$mt_1;
echo($mt);
?>

结果:18.163676023483
----------------
复制PHP内容到剪贴板
PHP代码:
$mt_1=ReturnMicrotime();

For($i=0; $i<1000; $i++)
{
    $curl[]=curl_init($url);
}
$mt_2=ReturnMicrotime();
$mt=$mt_2-$mt_1;
echo($mt);

结果:2.7319769859314
----------------
复制PHP内容到剪贴板
PHP代码:
$mt_1=ReturnMicrotime();
$curl=curl_init($url);//
For($i=0; $i<1000; $i++)
{
    curl_setopt ($curl, CURLOPT_HEADER, "Accept-Encoding: gzip, deflate");
}
$mt_2=ReturnMicrotime();
$mt=$mt_2-$mt_1;
echo($mt);

结果:0.011240005493164

发现占用资源最多的是curl_exec,而且还发现一个问题,
就是在测试调用curl_init与curl_setopt时,与网络根本没有连接过
直到去测试curl_exec时,才与网络有连接
其实在这之前,我一直以为在curl_init调用的时候就已经打开了与一个网络关联资源
但是现在这样的测试表明
curl_init返回的资源根本只是一个关联起来的资源
从数据上来分析
curl_init与curl_setopt都是在定义一个变量,但真正执行者是curl_exec
curl_exec是完成了打开->监听->返回数据的过程

结论
如果要实现提速的话只能只用一次curl_init和curl_close
但是只能提高非常小的一速度。

作者: bkkkd   发布时间: 2007-06-26

就是在测试调用curl_init与curl_setopt时,与网络根本没有连接

花的时间少,你就能说明它没工作过?

curl的工作流程只有看它源码才能分析出来。

作者: 我要读书网   发布时间: 2007-08-27

最近在做SSO  也用到了CURL

感觉挺不错的东西.哈哈

作者: 逆雪寒   发布时间: 2007-08-28