Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-08-2010 14:55:12

bibine425
Membre
Date d'inscription: 09-10-2007
Messages: 17

Comment garder en cache les données issues de Twitter ?

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).

Code:

$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 :

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 :

Code:

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

 

#2 06-09-2010 10:15:10

My_Sic
Membre
Date d'inscription: 06-09-2010
Messages: 49
Site web

Re: Comment garder en cache les données issues de Twitter ?

Bonjour,

Je pense que pour mettre en cache ce genre de donnée, le Zend_Cache_Frontend_Class est plus adapté (et plus transparent).

Code:

<?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;
    }
} 
?>

Code:

<?
$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)


http://www.centurion-project.org: Full stack Framework based on Zend Framework; led by:
http://www.octaveoctave.com: an enthusiastic web agency full of passionate.
http://www.cache-pistache.com: French blog on ZF and SF perfomance

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages