Search code examples
phpcurllong-polling

When should curl_close() be used?


The below script will operate indefinitely and will be initiated by using php myscript.php.

http://example.com/longpolling.php will only respond if it has something to communicate to php myscript.php, and the below curl request will timeout before longpolling.php will reach its time limitation.

Should I close and reopen the curl connection each loop, or keep it open indefinitely.

<?php
// php myscript.php
$options=[
    CURLOPT_URL=>'http://example.com/longpolling.php',
    CURLOPT_RETURNTRANSFER=>true,
    CURLOPT_CONNECTTIMEOUT => 300,
    CURLOPT_TIMEOUT=> 300
];
$ch      = curl_init();
curl_setopt_array( $ch, $options );
while (true) {
    $rsp = curl_exec( $ch );
    // Do something
    //curl_close( $ch );    //should I close and reopen?
}

Solution

  • If the URLs are on the same server reusing the handle will lead to an increase in performance. cURL will reuse the same TCP connection for each HTTP request to the server.

    Here is also a nice benchmark for this issue.