2011-10-25 2 views
2

J'ai un script que j'appelle via un navigateur, dans lequel je crée un objet SoapClient.stocker SoapClient pour la prochaine demande - php

Je souhaite stocker l'objet SoapClient de telle sorte que je puisse l'utiliser de nouveau lorsque j'appuie sur le script via le navigateur.

Tout ce que je veux faire est d'éviter de se connecter à nouveau et d'utiliser la connexion précédente.

J'ai essayé de le stocker en session mais l'objet SoapClient perd les valeurs des attributs sdl. expliqué ici https://bugs.php.net/bug.php?id=36395

Existe-t-il une autre façon de l'implémenter?

+0

Utilisez une prise de niveau bas et gardez-la ouverte le plus longtemps possible. –

+0

Les termes que vous devriez utiliser pour rechercher une solution sont ['PHP persistent SoapClient'] (http://www.google.com/search?q=php+persistent+soapclient) - le mot clé est '[[ persistante] (http://www.google.com/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=persistent#hl=fr&q=persistent&tbs=dfn:1&tbo=u&sa=X&ei=7pCmTu_zDoyLswa-qtn0DQ&ved=0CC4QkQ4&fp=1&biw = 1280 & bih = 892 & bav = on.2, ou.r_gc.r_pw., Cf.osb & cad = b) '. Dans cette recherche, j'ai trouvé [cette page] (https://bugs.php.net/bug.php?id=30498) (3ème résultat) - ça vous aide du tout? – DaveRandom

Répondre

0

Comme le dit PHP manual page:

Notez que de nombreux objets intégrés PHP ne peut pas être sérialisé.

Il existe quelques exceptions mais je ne pense pas que SoapClient l'est. Quoi qu'il en soit, je ne peux honnêtement pas penser à une raison pour laquelle vous voudriez le faire car, en termes de performances, il sera probablement moins efficace de sérialiser/désérialiser que d'instancier la classe SoapClient avec chaque requête.

L'instanciation d'un SoapClient à partir d'un WSDL est relativement simple et il vaudrait mieux que vous le fassiez. Vous pouvez écrire une fonction d'aide pour le faire pour vous.

+0

au lieu d'utiliser du savon j'ai essayé d'utiliser curl. et c'est plus rapide que du savon ... mais ça prend trop de temps. Ce que j'ai réalisé est que j'utilise magento et la configuration initiale de ceci est la chose qui prend du temps. une connexion au fichier php simple est assez rapide. aucune idée comment puis-je éviter cela. – pankaj

+0

Vous avez donc une application à partir de laquelle vous consommez des services web fournis par Magento? Je ne connais pas beaucoup Magento mais si vous savez que le démarrage de SoapClient prend beaucoup de temps, alors comment est généré le WSDL côté Magento? Est-ce un fichier statique ou généré dynamiquement? La configuration de SoapClient à partir d'un WSDL statique est généralement rapide. Les appels réels au service à distance peuvent être lents, mais vous ne le résoudrez pas du côté de la consommation. – poisson

Questions connexes