加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 多个curl请求,何时关闭句柄?

发布时间:2020-12-13 16:49:41 所属栏目:PHP教程 来源:网络整理
导读:我对curl的init()和close()函数感到困惑.我想知道在以下每种情况下我应该何时关闭卷曲手柄: 1.使用单个句柄获取具有不同选项的“单个”URL.例如: $curl=curl_init('google.com');curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);curl_exec($curl); 现在我
我对curl的init()和close()函数感到困惑.我想知道在以下每种情况下我应该何时关闭卷曲手柄:
1.使用单个句柄获取具有不同选项的“单个”URL.例如:

$curl=curl_init('google.com');
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_exec($curl);

现在我想将FOLLOWLOCATION设置为false.我应该做curl_close($curl),并从头开始做所有事情,或者只是设置选项并再次执行它,如下所示:

curl_setopt($curl,false);
curl_exec($curl);

2.使用单个句柄获取“多个”URL.例如:

$curl = curl_init('google.com');
curl_exec($curl);

现在我想得到stackoverflow.com.我应该关闭句柄并从头开始,或者我可以设置另一个URL而不关闭句柄.像这样:

$curl = curl_init('stackoverflow.com');
curl_exec($curl);

3.使用多个句柄来获取多个URL.这是我的代码:

$CONNECTIONS=10;
$urls=fopen('urls.txt','r');
while(!feof($urls))
{
   $curl_array=array();
   $curl=curl_multi_init();
   for($i=0;$i<$CONNECTIONS&&!feof($urls);$i++)             
            //create 10 connections unless we have reached end of file
   {
        $url=fgets($urls);                    //get next url from file
        $curl_array[$i]=curl_init($url);      
        curl_multi_add_handle($curl,$curl_array[$i]);
   }
   $running=NULL;
   do
   {
       curl_multi_exec($curl,$running);
   }while($running>0);
   for($i=0;$i<$CONNECTIONS;$i++)    
   {
       $response=curl_multi_getcontent($curl_array[$i]);
       curl_multi_remove_handle($curl,$curl_array[$i]);
       curl_close(($curl_array[$i]));
   }
   curl_multi_close($curl);
}

正如您所看到的:在获取每个单个句柄的内容后,我将从多个句柄中移除句柄,关闭单个句柄,然后在for循环后关闭多个句柄.这种做法是正确的还是我覆盖了句柄?
谢谢

解决方法

when to close the handle?

简单地说,你完成后关闭它.

解决您的具体问题:

>如果您计划重复使用curl句柄(单个资源),请在完成后将其关闭.
>如果您有多个卷曲句柄(多个资源),您可以像显示的那样将curl_multi_ *函数与它们一起运行,或者按顺序运行它们并在完成该资源后关闭卷曲句柄(请参阅#1) .
>这对我来说是正确的.

请注意,如果您正在重用curl句柄,请注意可能会影响对同一资源的多个请求的缓存,重定向和其他option settings.

我鼓励您开发代码以请求每个资源一次.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读