KarlyTos
Messages postés4Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention24 mars 2011
-
24 mars 2011 à 00:33
KarlyTos
Messages postés4Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention24 mars 2011
-
24 mars 2011 à 17:23
Bonjour,
PlateForme : WampServer 2.1
Pour pouvoir faire appel a des WebServices en PHP, je place la ligne suivante dans mon code :
$monSoapClient = new SoapClient('https://site.com/Service.wsdl');
Je souhaite utiliser les webservices associes a ce site, et pour optimiser les temps de reponse, je pense qu'il est preferable de creer le client SOAP qu'une seule fois.
Hors, j'ai plusieurs pages PHP qui doivent utiliser ces webservices, et il n'est apparemment pas possible de definir une instance de SoapClient comme variable de session.
J'ai donc pense a utiliser le mode cache soap ce qui devrait permettre de stocker le fichier WSDL dans le repertoire C:\wamp\tmp
Cependant, aucune trace de fichier cache wsdl dans ce repertoire bien que j'ai pris le soin d'activer l'option wsdl cache de SOAP.
Avez-vous une idee de ce qui pourrait poser probleme pour la generation des fichiers de cache WSDL ?
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 24 mars 2011 à 09:10
Alors, j'ai jamais été confronté à ce problème. Voila juste une ébauche d'idée à prendre au conditionnelle.. LOL..
A chaque demande tu assignes un identifiant unique, et le résultat tu le mets en base de données. Tu combines cela à un principe de time-out de ce 'cache' pour rafraichir la donnée de façon pertinente et tu peux gagner en perfs.. C'est une idée comme une autre.. Sinon à défaut d'une base de données, tu peux utiliser APC.
S.
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 24 mars 2011 à 13:27
Si tu considères l'appel de ton WebServices comme une fonction tu prends les paramètres d'entrées, tu en fais une clé. Par exemple un md5 d'un json_encode des paramètres dans un tableau..
Tu crées une fonction englobant ton appel au WS, et tu appelles cette fonction avec les mêmes paramètres d'entrée que le WS. Dans cette fonction, première vérification : Ai-je déja appelé ce WS avec CES paramètres ??
Tu comprends mieux ?
S.
KarlyTos
Messages postés4Date d'inscriptionlundi 13 novembre 2000StatutMembreDernière intervention24 mars 2011 24 mars 2011 à 14:40
Je comprends ta suggestion Syndrael.
Neanmoins dans mon contexte, je ne pense pas que cela soit jouable car le resultat d'un meme WebService est toujours different, meme si les parametres sont identiques.
Tu peux par exemple imaginer un WebService qui te retourne la vitesse a laquelle roule une Formule 1 sur une course :
- la vitesse change constamment car accelerations, freinages, ...
- il n'y a pas vraiment de pertinence a stocker le resultat en BDD
Pour en revenir a ma question initiale, j'espere vraiment trouver le moyen de faire fonctionner le mode cache d'un WSDL, car je ne vois pas ce qui pourrait fonctionner mieux.
D'autant plus que ca ne doit pas etre bien Sorcier sachant que c'est une fonctionnalite standard...
Reste a trouver le grain de sable qui bloque la mecanique...
Merci de votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 24 mars 2011 à 15:26
Ahh !! Tu parles d'un enabled_cache ou un truc comme ça dans tes options ??
Ben je suis preneur d'une solution.
Pour un problème identique, je n'ai pas été capable de mettre ce cache en pratique. Au bureau, tout le monde me disait juste d'activer cette option, personne n'avait testé ou même essayé.
A la fin pour prouver que ça ne marchait pas, j'ai lancé une série de benchmarks.. J'ai aussi fouillé dans de nombreux forums dont stack-overflow et autre sites en anglais.
Donc je suis preneur d'une solution, juste par curiosité technique. Désolé alors de ne pas t'être utile.
S.