Aynı tanıtıcıyı yeniden kullanmak için bir performans artışı var. Bkz: Eşzamanlı olarak isteklerini gerekmiyorsa Reusing the same curl handle. Big performance increase?
, * curl_multi_ kullanarak işlevlerini dikkate de büyük performans artışı sağlar (ör curl_multi_init, curl_multi_exec, vs.).
GÜNCELLEME:
ben her istek için yeni bir kolu kullanarak ve aşağıdaki kodla aynı tanıtıcı kullanarak bombeyle benching çalıştı:
Curl without handle reuse: 8.5690529346466
Curl with handle reuse: 5.3703031539917
:
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, CURLOPT_URL, "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>';
ve aşağıdaki sonuçları aldık
Aynı tanıtıcıyı yeniden kullanmak, aslında aynı sunucuya birden çok kez bağlanırken önemli bir performans artışı sağlar. Ben farklı sunuculara bağlanırken çalıştı:
$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, CURLOPT_URL, $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, CURLOPT_URL, $url);
curl_exec($ch);
}
curl_close($ch);
$end_time = microtime(true);
ob_end_clean();
echo 'Curl with handle reuse: ' . ($end_time - $start_time) . '<br>';
Ve aşağıdaki sonuç var:
Curl without handle reuse: 3.7672290802002
Curl with handle reuse: 3.0146431922913
Yine oldukça önemli bir performans artışı.
Kullanımı ve kodun nasıl ele alındığını görmeden oldukça belirsiz bir soru. –
Güvenilirlik tarafında hatalıyım ve yeni saplar daha az sorunlu görünüyor, çünkü bir istekte bulunan artık durum, yeni bir tanıtımı gerçekleştirirseniz, gelecekteki istekleri kirletme olasılığının düşük olduğunu gösteriyor. Bununla birlikte, haftalarca düzenli olarak çalışan ve aynı kıvrılma tutamında yaklaşık bir milyon http isteği yapan bir işlem var. Tek bir alanda tek bir api için çok sade http istekleridir. Sorun yaşamadım. – goat
Olası çoğaltılabilir [cURLs işlevini ne zaman kullanacağız curl \ _close?] (Http://stackoverflow.com/questions/3849857/when-to-use-curls-function-curl-close) –