Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Mon application commence à être gonfler de plusieurs service web (Google, Youtube, Twitter, etc...) Je vais me concentrer sur Twitter pour l'exemple puisqu'il est plus simple mais mes questions s'applique à l'ensemble.
J'aimerais savoir s'il est possible de sauvegarder en mémoire, peu importe laquelle, la connexion qui est initialiser avec le service web. Par exemple, avec Twitter, on fait ceci:
$twitter = new Zend_Service_Twitter($username,$password); $twitter->account->verifyCredentials();
À chaque fois qu'un page est télécharger, le script se connecte avec le serveur de twitter pour me connecter et récupérer les messages. Or, communiquer avec un autre serveur simplement pour me connecter avec un compte prend un certain temps et l'ensemble de mes services web combiner font mal à la vitesse de téléchargement du site.
Parfois, les services plantent et c'est un message de "connection timeout" après 30 secondes qui apparait. Je viens de vivre le problème avec les serveurs de Google Calendar qui ont planté la semaine dernière.
Au final, j'aimerais savoir s'il y a une solution pour améliorer tout ceci et pour éviter de réinitialiser toute connexion chaque fois. Est-ce que le service de Cache de Zend pourrait contribuer à ceci ?
Merci pour vos réponses
Hors ligne
non pour éviter le timeout il faut trafiquer avec le service
il est possible mais dangereux de mettre en place un maintient de certaines connexion.
si la connexion est un objet purement php et non une ressource (comme un connexion à une bdd)
alors on peut sérialiser l'objet et le mettre en session à chaque fois que l'utilisateur revient on désérialise et on fait un échange avec le serveur ainsi le serveur remet son timeout à 0
cela implique de faire beaucoup d'échange avec le serveur pour rien.
on peut temporiser et mettre la date et l'heure du dernier échange en sessions et ne faire que des échange avec le serveur qu'après passé un certain temps suffisamment long mais inférieur au timeout.
reste que si le client fait une pause la connexion est perdue.
on peut le déterminer à l'avance avec la date de dernier appel s'il faut se re connecter.
enfin si on a absolument besoin de conserver la connexion on peut faire la même chose mais cette fois non pas dans la session mais dans un fichier ou une base commune à tous les utilisateurs
attention alors à la préméabilité entre les sessions
chaque fois qu'un utilisateur arrive on vérifie toute les connexion qui son proche du time out et on fait un appel pour elle
de cette façon le trafic général sur le serveur régénère en continu les connexion il n'y a que si aucun utilisateur n'invoque le serveur pendant un temps supérieur au timeout que les connexions tombes.
enfin si on maîtrise le serveur on peut faire un cron qui régénère les connexion à la place de le faire sur l'arrivé des utilisateur.
je déconseille de mettre en oeuvre ses solutions ces astuces sont à réserver qu'en cas de force majeure
A+JYT
Hors ligne
Merci du conseils ! Alors ce sont des solutions de derniers recours mais non recommandés...
Je vais donc devoir m'y faire, je vais voir avec la cache si je peux faire quelque chose !
Hors ligne
Pages: 1