Estoy trabajando en una aplicación que la mayor parte de los datos los obtiene de webservice, pero tengo dudas en como manejar la sesiones de este, les doy un ejemplo de como funciona:
Inicio Sesión
->Consulta Servicio1
->Consulta Servicio2
->Consulta Servicio3
Cerrar Sesión
Cada uno de los servicios los tengo en vistas separadas, el inicio y cierre de sesión en un modelo, lo que quiero es pasar $client entre vistas y consumir el servicio determinado sin tener que iniciar sesión en cada uno de estos, ya que en el modelo realizo el proceso de inicializar la conexión y setear el Soapheader con las variables de autenticación, por lo cual no quiero que en cada vista(consumo de servicio) deba iniciar sesión (lo cual no es lógico) y también definir un tiempo para cerrar la sesión si el cliente cerro la aplicación sin completar todos los pasos.
Pensé en hacer un caching de la variable pero no me funciona
public static function serviceConnection() {
$value = Yii::app()->cache->get('sesionServicio');
if ($value === false) {
try {
$url = "url.wsdl";
$param = array(
'param1' => 'param2'
);
$client = new SoapClient($url, array('trace' => true));
$client->ServicioaConsumir($param);
Yii::app()->cache->set('sesionServicio', $client, 120);
$value = Yii::app()->cache->get('sesionServicio');
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
return $value;
}
Los anterior me genera SoapClient::__call(): supplied argument is not a valid sdl resource
pero si le retorno $client si funciona.
Aclaro dos cosas estoy empezando con yii, y estoy mirando como hacer que el webservice funcione adecuadamente según lo comentan en CWebService, pero para este segundo no e encontrado mucha información, si de pronto alguien tiene información o ejemplo de como se debe consumir adecuadamente servicios con esta clase les agradezco también.
Les agradezco por su ayuda o sugerencia

Help











