再次使用相同的句柄,性能提升.见:
Reusing the same curl handle. Big performance increase?
原文链接:https://www.f2er.com/php/132217.html如果您不需要同步请求,请考虑使用curl_multi_ *函数(例如curl_multi_init,curl_multi_exec等),这也提供了很大的性能提升.
更新:
我尝试使用一个新的句柄为每个请求和使用相同的句柄与以下代码:
ob_start(); //Trying to avoid setting as many curl options as possible $start_time = microtime(true); for ($i = 0; $i < 100; ++$i) { $rand = rand(); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,"http://www.google.com/?rand=" . $rand); curl_exec($ch); curl_close($ch); } $end_time = microtime(true); ob_end_clean(); echo 'Curl without handle reuse: ' . ($end_time - $start_time) . '<br>'; ob_start(); //Trying to avoid setting as many curl options as possible $start_time = microtime(true); $ch = curl_init(); for ($i = 0; $i < 100; ++$i) { $rand = rand(); curl_setopt($ch,"http://www.google.com/?rand=" . $rand); curl_exec($ch); } curl_close($ch); $end_time = microtime(true); ob_end_clean(); echo 'Curl with handle reuse: ' . ($end_time - $start_time) . '<br>';
并得到以下结果:
Curl without handle reuse: 8.5690529346466 Curl with handle reuse: 5.3703031539917
因此,重复使用相同的句柄时,实际上可以在多次连接到同一台服务器时提供显着的性能提升.我尝试连接到不同的服务器:
$url_arr = array( 'http://www.google.com/','http://www.bing.com/','http://www.yahoo.com/','http://www.slashdot.org/','http://www.stackoverflow.com/','http://github.com/','http://www.harvard.edu/','http://www.gamefaqs.com/','http://www.mangaupdates.com/','http://www.cnn.com/' ); ob_start(); //Trying to avoid setting as many curl options as possible $start_time = microtime(true); foreach ($url_arr as $url) { $ch = curl_init(); curl_setopt($ch,$url); curl_exec($ch); curl_close($ch); } $end_time = microtime(true); ob_end_clean(); echo 'Curl without handle reuse: ' . ($end_time - $start_time) . '<br>'; ob_start(); //Trying to avoid setting as many curl options as possible $start_time = microtime(true); $ch = curl_init(); foreach ($url_arr as $url) { curl_setopt($ch,$url); curl_exec($ch); } curl_close($ch); $end_time = microtime(true); ob_end_clean(); echo 'Curl with handle reuse: ' . ($end_time - $start_time) . '<br>';
并得到以下结果:
Curl without handle reuse: 3.7672290802002 Curl with handle reuse: 3.0146431922913
表现仍然相当显着.