difference between executing curl_close() once or frequently?

前端 未结 3 1599
别那么骄傲
别那么骄傲 2021-01-17 16:37

When is it necessary to close curl connection and release resources consumed by it?

Why do I ask this question, well quite simply because I was told, that PHP garbag

相关标签:
3条回答
  • 2021-01-17 16:59

    Results for 100 times curl_exec (fetching url with cache avoiding):

    Executing in every loop:

    for ($i = 0; $i < 100; ++$i) {
        $c = curl_init();
        curl_setopt($c, CURLOPT_URL, "http://www.google.com/?rand=" . rand());
        curl_exec($c);
        curl_close($c);
    }
    

    8.5 seconds

    Executing only once :

    $c = curl_init();
    for ($i = 0; $i < 100; ++$i) {
        curl_setopt($c, CURLOPT_URL, "http://www.google.com/?rand=" . rand());
        curl_exec($c);
    }
    curl_close($c);
    

    5.3 seconds


    Decision: get used to always use optimal code in your tasks. (source)

    0 讨论(0)
  • 2021-01-17 17:03

    as far as i understand it. The GC only cleans up resources that are no longer used/referenced. as whenever the curl variable fall out of scope, it'll be cleaned up. But that might only happen after the script has finished, or whenever the session is destroyed (depending on scope).

    But to be on the safe side, just follow common sense.. close it when its no longer needed.

    0 讨论(0)
  • 2021-01-17 17:22

    Depends. In my case since I was initializing curl instance in my custom CurlClient constructor

    $this->ch = curl_init();
    

    And then using same $curlClient object for multiple api calls, closing the instance

    curl_close($this->ch);
    

    would affect other API calls. Methods using the same object will not work, so I'm not closing it.

    0 讨论(0)
提交回复
热议问题