2011-01-12 12 views
9

birisi bize aşağıdaki parametreler arasındaki davranış farkını açıklayabilir misiniz?HTTP isteği için keep_alive ve persistent seçeneği arasındaki fark nedir? Zend_Http_Client sınıfında</p> <p><b>keep_alive</b> parametresini:

ve Zend_Http_Client_Adapter_Socket sınıfında

kalıcı

?

Bir grup HTTPS bağlantısını açık tutmak için ne yapmam gerektiğini (SSL'nin bozulmasını önlemek için) anlamak isterim.

sayesinde Gaston

+0

Kalıcı olmasını istediğiniz gibi geliyor. – Amber

cevap

0

KeepAlive isteğin sonunda kapalı olacak olsa bağlantısı, bireysel bir istek boyunca yeniden kullanılabilir anlamına gelir. Kalıcı, bağlantının, aynı PHP işleminde bir sonraki istek tarafından kullanılacak şekilde bireysel talebin ötesinde yaşayacağı anlamına gelir.

+0

Bu doğru değil. Keep-Alive, aynı bağlantıyı kullanarak aynı sunucuya (HTTP/1.1 kullanıyorsa) birkaç istekte bulunabileceğiniz anlamına gelir. Ancak, hızlı bir şekilde istekte bulunmazsanız, bağlantı sunucu tarafından kapatılacaktır. – Brad

1

Kalıcı bağlantı ou de kullanmalıdır kullanırsanız canlı tutma olmadan persitent işi taklit etmek çok iş yapmak zorunda kalacaktır Alive HTTP 1.1 connexion tutmak gibi.

Düzenleme

: sunucu tarafından belirlenen bir quite- kısa bir süre ayarı, yaklaşık

Keepalive ayarları görüşmelere (yemek zamanı idi). Apache varsayılan olarak Keep-Alive istekleri için 15s'u kullanır, ancak geçerli en iyi ayar 5s'dir. Bu çoğunlukla HTTP istemcisinin aynı HTTP bağlantısında bir sayfaya eklenmiş js ve css indirmesine yardımcı olmak için yapılır. Sunucu ayarlarını yapabilirseniz, En uzun Keep-Alive sorgularını deneyebilirsiniz (ancak dikkatli olun, bu, sunucunuz tarafından kabul edilen istemci sayısını ciddi olarak sınırlar).

Kalıcı bağlantı modu, uzun süreli kalıcı bağlantıya gerçekten taklit etmek için yapılır, açılan soket komut dosyasının sonunda kapatılmaz. Böyle bir ayara çok dikkat etmelisiniz. CLI modunda mısınız? Fcgi ?. Bir apache işleminde çalışıyorsanız, bu komut dosyasındaki bir sonraki istek üzerine aynı bağlantıyı alacağınızdan emin değilim (başka bir apache işlemi tarafından ele alınabilir), kodunuz çalışıyorsa en kötüsü bile en kötüsüdür. Büyük bir dağıtımda birkaç apache sunucusu. Ve bu istemci (PHP) tarafı içindir, ancak hedeflenen sunucu için de büyük bir acı olabilir.

yeniden düzenleyin: (SSL hakkında bir şey söyledi olmalıdır gibi)

Eğer SSL negociation süresini optimize etmeniz gerektiğinden emin misiniz? SSL, ilk isteği reddetmeyi sınırlamak için en azından sunucu tarafında Önbellek kullanır. SSL oturumunun istemci tarafındaki önbelleğe alma işlemi, Zend sınıfı tarafından kullanılan PHP stream_socket_client işlevi tarafından yapılabilir. Eğer yeni bir sınıfa kendi başınıza test edebilirsiniz (yalnızca arabirimi uygulamanız yeterlidir) ve curl kullanmayı deneyin. curl, SSL oturumunu önbelleğe alma özelliğini varsayılan olarak kullanır.

+0

Girişiniz için teşekkürler –

0

FYI, bekletme sırasında HTTP bağlantısını yeniden kullanması beklenirken, bağdaştırıcı sınıfı (en az son olarak 1.10) bunu doğru şekilde işlemez ve ne olursa olsun yeni bir bağlantı açar bayrak.