Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Voilà je souhaite afficher les données les plus vus sur Twitter en fonction d'une requête. Pour cela aucun problème (voir code ci-dessous).
$request = 'aplusk'; $twitter = new Zend_Service_Twitter(); $result = $twitter->userShow($request);
Mon souci s'est que je voudrais mettre en cache le résultat des données reçus de Twitter, pour éviter le nombre d'appel au service. J'ai essayé de le mettre en cache avec Zend_Cache mais on m'affiche le message d'erreur suivant :
Le code :
$request = 'aplusk'; if(!$result = $this->cache->load('Twitter_'.$request)) { $twitter = new Zend_Service_Twitter(); $result = $twitter->userShow($request); $this->cache->save($result,'Twitter_'.$request,array('Twitter')); } Zend_Debug::dump($result); exit;
Voici le résultat :
Warning: unserialize() [function.unserialize]: Node no longer exists in C:\EasyPHP5.3.0\www\library\Zend\Cache\Core.php on line 310 object(Zend_Rest_Client_Result)#122 (2) { ["_sxml":protected] => <br /> <b>Warning</b>: var_dump() [<a href='function.var-dump'>function.var-dump</a>]: Node no longer exists in <b>C:\EasyPHP5.3.0\www\library\Zend\Debug.php</b> on line <b>82</b><br /> object(SimpleXMLElement)#123 (0) { } ["_errstr":protected] => NULL }
Vous avez une solution pour mettre en cache le résultat. En vous remerciant d'avance.
Hors ligne
Bonjour,
Je pense que pour mettre en cache ce genre de donnée, le Zend_Cache_Frontend_Class est plus adapté (et plus transparent).
<?php class Centurion_Service_Twitter extends Zend_Service_Twitter { /** * @var Zend_Cache_Frontend */ protected $_cache = null; public function _construct() { $backendName = 'File'; $frontendName = 'Class'; $frontendOptions = array( 'lifetime' => 1800, ); $backendOptions = array( 'cache_dir' => APPLICATION_PATH . '/../data/cache' ); $frontendOptions['cached_entity'] = $this; $this->_cache = Zend_Cache::factory($frontendName, $backendName, $frontendOptions, $backendOptions); } /** * @return Zend_Cache_Frontend */ public function getCache() { return $this->_cache; } } ?>
<? $request = 'aplusk'; $twitter = new Centurion_Service_Twitter(); $result = $twitter->getCache()->userShow($request); ?>
Plus d'info http://framework.zend.com/manual/fr/zen … ends.class
Dernière modification par My_Sic (21-09-2010 09:30:52)
Hors ligne