9
votes

Quelle est la différence entre les options Garder_alive et persistantes pour la demande HTTP?

Quelqu'un peut-il nous expliquer la différence de comportement entre les paramètres suivants:

Garder_alive paramètre dans Zend_HTTP_Client classe?

et

persistant dans zend_http_client_adapter_socket classe?

J'aimerais comprendre ce que je dois faire pour garder une bande de connexion HTTPS ouverte (pour éviter la négociation de la SSL).

merci, Gaston


1 commentaires

On dirait que tu veux persister.


3 Réponses :


0
votes

Keepalive signifie que la connexion peut être réutilisée au cours d'une demande individuelle, bien qu'elle soit fermée à la fin de la demande. Persistant signifie que la connexion survivra au-delà de la demande individuelle afin d'être utilisée par une demande ultérieure sur le même processus PHP.


1 commentaires

Ce n'est pas précis. Garder-vivant signifie que vous pouvez faire plusieurs demandes au même serveur (en supposant qu'il utilise http / 1.1) en utilisant la même connexion. Cependant, si vous ne faites pas de demande rapidement, la connexion sera fermée par le serveur.



1
votes

Si vous utilisez la connexion persistante, vous devez utiliser aussi bien la conservation, car sans rester en vie HTTP 1.1 connexions votre Persitent devra faire beaucoup de travail pour imiter le travail.

EDIT: (il était temps de manger)

Keepalive Parlages parle d'un réglage assez court , défini par le serveur. Apache par la poignée par défaut 15s pour les demandes de conservation, mais un paramètre optimisé actuel est de 5s. Ceci est principalement fait pour aider le client HTTP télécharger JS et CSS connecté à une page dans la même connexion HTTP. Si vous pouvez ajuster les paramètres du serveur, vous pouvez essayer les requêtes de conservation les plus répandues (mais faites attention, cela limitera sérieusement le nombre de clients accepté par votre serveur).

Connexion persistante est effectué pour imiter vraiment une connexion persistante à long terme, la prise ouverte n'est pas fermée à la fin du script. Vous devriez être très prudent avec un tel paramètre. Êtes-vous en mode CLI? FCGI ?. Si vous courez dans un processus Apache, je ne suis vraiment pas sûr que vous obtiendrez la même connexion sur la demande suivante sur ce script (qui peut être gérée par un autre processus Apache), il est même pire si votre code s'exécute sur Plusieurs serveurs Apache dans un grand déploiement. Et ceci est pour le côté client (PHP), mais cela peut être aussi une grande douleur pour le serveur ciblé.

ré-modifier : (comme quelque chose à propos de SSL doit être dit)

Êtes-vous sûr d'optimiser le temps de négociation SSL? SSL Utilisez le cache, au moins sur le côté serveur, pour limiter la négociation à la première demande. La mise en cache latérale du client de la session SSL est peut-être effectuée par la fonction PHP stream_socket_client (qui est utilisée par la classe Zend. Sinon, vous pouvez tester une nouvelle classe à partir de la vôtre (juste besoin de mettre en œuvre l'interface) et Essayez d'utiliser CURL, car vous utilisez SSL Session Caching par défaut.


0 commentaires

0
votes

FYI, tandis que Keep-Alive est censé réutiliser la connexion HTTP, la classe de l'adaptateur (au moins aussi récemment que 1.10) ne gère pas cela correctement et ouvre une nouvelle connexion quel que soit le drapeau.


0 commentaires