Di PHP, Yii, SOAP e WebService

da Lug 19, 2013Blog0 commenti

Yii-logo-transparent-smallParliamo ancora di Yii, il nostro framework preferito (che tra l’altro a breve dovrebbe rilasciare la sua versione 2.0 basata su PHP 5.3 e i namespace!).

Mi è capitato di recente di dover sviluppare un WebService per un applicativo Yii. Seguendo la guida ufficiale tutto è andato liscio e filato, è favolosamente semplice allestire questo tipo di servizio anche in presenza di dati composti. Ad esempio per tornare un modello o un array di modelli, selezionando selettivamente quali campi tornare, è sufficiente aggiungere delle righe di commento standard PHPDoc nello stesso ed effettuare la return della find o findAll. Fantastico!

Nella vita dello sviluppatore però si sà, difficilmente le cose vengono giuste al primo colpo! Così ci si trova a cambiare alcune righe del backend, modificare i campi ritornati per far fronte a nuove esigenze, aggiungere funzioni. Ma nel caso dei WebService questo non sempre si riflette immediatamente sul client, e si passano minuti o decine di minuti a sbattere la testa contro la tastiera cercando di capire perché le modifiche fatte sul server SOAP non vengono viste dal client? La risposta è semplice: cache! Dannatissima ed utilissima cache che in fase di sviluppo può essere molto fastidiosa.

Come risolvere?

Sul client (PHP in questo caso):

 ini_set(“soap.wsdl_cache_ttl”, ‘0’);
 ini_set(“soap.wsdl_cache_enabled”, ‘0’);
 $client=new SoapClient(‘http://localhost/GAWebService’);

In questo modo la cache del WebService non verrà mantenuta dal client.

Nel caso di Yii c’è però un’ulteriore problema: modificando i campi esportabili del modello questo non si riflette sul client, sebbene l’XML del WebService venga aggiornato! In questo caso occorre eliminare i file wdsl* nella directory temporanea del webserver, tipicamente /tmp nei sistemi Linux. Questi file contengono la cache della struttura dei dati esportati, costringendi Yii a rigenerarli ci mostrerà finalmente i dati aggiornati!

 

Pochi semplici accorgimenti che spero facciano risparmiare tempo!

Per altre informazioni visitate la sezione del nostro blog.

CREATE YOUR PROJECT

Book a free consultation

Your business is constantly evolving. Tell us about the project you have in mind, whether it's an e-commerce website or a strategic business solution.