PHP curl_multi kullanarak eşzamansız / paralel HTTP istekleri

4 Cevap php

Geçenlerde kıvrılma ile birden fazla istekte olasılığı içine baktı. Ben bu yüzden sadece bazı kavramları açıklamak için umut ediyorum, tam olarak anlamak olmayabilir.

Birden fazla kaynaktan içerik getiriliyor ise kesinlikle iyi bir seçenek. Bu şekilde, hala yavaş olanlar için beklerken hızlı sunucularından sonuçlarını işleme başlayabilirsiniz. Yine aynı sunucuda birden fazla sayfa talebinde eğer bunu kullanmak mantıklı mı? Sunucu hala aynı müşteriye anda birden çok sayfa hizmet verecek?

4 Cevap

PHP çoklu-threading yapamaz, bu yüzden diğerleri hala almak edilirken bir sayfa işleme başlamak mümkün olmayacaktır. Tüm sayfalar alınır ya da zaman aşımı kadar Multi-kıvırmak kontrolünü geri dönmeyecek. Yani o kadar uzun o alınacak yavaş sayfası için alır alacaktır. Sen hala büyük bir destek verecek olan, (multi_curl) paralel seri (kıvrılma) den gidiyor.

Sunucular belli bir yapılandırma sınırı aynı istemci up birden fazla sayfa hizmet edecektir. Bir sunucudan 5-10 sayfaları isteme iyi olurdu.

Giriş this out, bu adam curl_multi ile uyumsuz çalışan bir komut dosyası yaptı. Onunla birkaç saat boyunca oynarken edilmiştir ve iyi çalışıyor.

En düşünüyorum veya tüm sunucuların aynı müşteriye bir seferde bir sayfa daha fazla hizmet edecek. Sen bir bağlantı başarısız olursa o zaman, tüm diğerleri yaşamış edildikten sonra denenecek için bağlantı dizinin üzerine itin, sen bağlantıları için makul bir zaman aşımı ayarlayabilirsiniz. Bu şekilde her zaman birkaç almak için çalışıyor olsa bile, bir defada en az bir tane almak olacak. Bu mantıklı mı? :)

Bazı sunucular çok sayıda bağlantı veya istekleri aynı istemci inandığı yapılmış ise defans davranmaya yapılandırılmış olabilir. Böyle damla / gibi şeyler tüm bağlantıları, ya da başka şeyler arasında bazı agrega toplam limit bant genişliği bağlantıları reddetmek yapabilir.

Ne olursa olsun, bir web gezgini sitenize düşünün olmak isterim gibi düşünceli olmak, ve bir kerede çok fazla tek bir sunucuyla bombalamaya çalışın.

5 farklı sunuculardan 5 sayfa her getirmesi gerekiyorsa yapılır kadar 1 sunucuya 5 bağlantı yapsam daha yapılması kadar her sunucuya 1 bağlantısı kullanıyorsanız, çok daha hızlı bitirmek olasıdır.