Kann uns jemand den Unterschied im Verhalten zwischen den folgenden Parametern erklären:
keep_alive Parameter in der Zend_Http_Client Klasse?
und
persistent in der Zend_Http_Client_Adapter_Socket-Klasse?
Ich würde gern verstehen, was ich tun muss, um eine Reihe von HTTPS-Verbindungen offen zu halten (um die Aushandlung der SSL zu vermeiden).
Danke, Gaston
Wenn Sie die persistente Verbindung verwenden, sollten Sie auch die Keep-Alive-Funktion verwenden, da Ihre Persitente ohne die Alive-HTTP 1.1-Verbindung eine Menge Arbeit aufwenden muss, um den Job zu emulieren.
Bearbeiten: (es war Zeit zu essen)
Keepalive -Einstellungen sprechen von einer ziemlich kurzen Einstellung, die vom Server festgelegt wird. Standardmäßig behandelt Apache 15s für Keep-Alive-Anfragen, aber eine aktuell optimierte Einstellung ist 5s. Dies geschieht hauptsächlich, um dem HTTP-Client zu helfen, js und css herunterzuladen, die an eine Seite in derselben HTTP-Verbindung angehängt sind. Wenn Sie die Servereinstellungen anpassen können, können Sie am längsten Keep-Alive-Abfragen versuchen (aber seien Sie vorsichtig, dies wird die Anzahl der Clients, die von Ihrem Server akzeptiert werden, ernsthaft begrenzen).
Der ModusPermanente Verbindung wird ausgeführt, um eine dauerhafte persistente Verbindung zu emulieren. Der geöffnete Socket wird am Ende des Skripts nicht geschlossen. Sie sollten mit dieser Einstellung sehr vorsichtig sein. Befindest du dich im CLI-Modus? FCGI ?. Wenn Sie in einem Apache-Prozess ausgeführt werden, bin ich mir nicht sicher, ob Sie bei der nächsten Anfrage dieses Skripts die gleiche Verbindung erhalten (die möglicherweise von einem anderen Apache-Prozess gehandhabt wird). Am schlimmsten ist es sogar, wenn Ihr Code läuft mehrere Apache-Server in einer großen Bereitstellung. Und das ist für die Client (PHP) -Seite, aber es kann auch ein großer Schmerz für den Zielserver sein.
Erneut bearbeiten : (etwas über SSL muss gesagt werden)
Sind Sie sicher, dass Sie die SSL-Verhandlungszeit optimieren müssen? SSL verwendet Cache, zumindest auf Serverseite, um die Verhandlung auf die erste Anfrage zu beschränken. Das clientseitige Caching der SSL-Sitzung erfolgt möglicherweise über die PHP-Funktion stream_socket_client (die von der Zend-Klasse verwendet wird. Falls nicht, könnten Sie eine neue Klasse testen und die Schnittstelle implementieren) Versuchen Sie es mit curl, da curl standardmäßig SSL-Session-Caching verwendet.
KeepAlive bedeutet, dass die Verbindung im Verlauf einer einzelnen Anfrage wiederverwendet werden kann, obwohl sie am Ende der Anfrage geschlossen wird. Persistent bedeutet, dass die Verbindung über die individuelle Anfrage hinaus bestehen bleibt, um von einer nachfolgenden Anfrage im selben PHP-Prozess verwendet zu werden.
FYI, während keep-alive die HTTP-Verbindung wiederverwenden soll, behandelt die Adapterklasse (mindestens 1.10) dies nicht korrekt und öffnet unabhängig vom Flag eine neue Verbindung.
Tags und Links php http http-headers zend-framework