Fichier Cache WSDL introuvable - Utilisation SOAP WebServices

Signaler
Messages postés
4
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2011
-
Messages postés
4
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2011
-
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 ?

Merci de votre comprehension.

6 réponses

Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
14
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.
Messages postés
4
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2011

Bonjour,

Lorsque tu precise :

A chaque demande tu assignes un identifiant unique


A quelle demande fais-tu reference :
- Demande du WSDL ?
- Demande d'execution d'un WebService ?

Merci de votre aide.
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
14
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.
Messages postés
4
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2011

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.
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
14
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.
Messages postés
4
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2011

Effectivement Syndrael, je faisais reference au phpinfo qui lui meme pointe sur php.ini

php.ini semble configure correctement car le phpinfo renvoie :

Soap Client : enabled
Soap Server : enabled

Directive Local Value Master Value
soap.wsdl_cache 1 1
soap.wsdl_cache_dir /tmp /tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 100 100
soap.wsdl_cache_ttl 86400 86400