2010-11-08 7 views
4

Je voudrais mettre en cache le résultat du résultat de l'API Twitter et les afficher aux utilisateurs.comment mettre en cache le résultat twitter api?

Quelle est la meilleure méthode pour mettre en cache le résultat?

Je pense à écrire le résultat dans un fichier basé sur une limite de temps .. Est-ce correct ou toute autre méthode devrait être utilisée? Et le plus important, quel serait le temps de cache idéal?

Je voudrais afficher le dernier contenu de la twitter, mais l'API de Twitter a les limites de la demande .. Et mon site a des visiteurs solides/jour ..

Répondre

18

Le moyen le plus propre pour ce faire serait d'utiliser APC (Alternative PHP Cache) s'il est installé. Cela a construit dans le « temps de vivre » fonctionnalité:

if (apc_exists('twitter_result')) { 
    $twitter_result = apc_fetch('twitter_result'); 
} else { 
    $twitter_result = file_get_contents('http://twitter.com/...'); // or whatever your API call is 
    apc_store('twitter_result', $twitter_result, 10 * 60); // store for 10 mins 
} 

Un délai d'attente de 10 minutes sur les données serait mon choix. Cela varie en fonction de la fréquence l'alimentation est mis à jour ...


Modifier Si vous ne l'avez pas installé APC, vous pouvez le faire en utilisant un fichier très simple:

if (file_exists('twitter_result.data')) { 
    $data = unserialize(file_get_contents('twitter_result.data')); 
    if ($data['timestamp'] > time() - 10 * 60) { 
     $twitter_result = $data['twitter_result']; 
    } 
} 

if (!$twitter_result) { // cache doesn't exist or is older than 10 mins 
    $twitter_result = file_get_contents('http://twitter.com/...'); // or whatever your API call is 

    $data = array ('twitter_result' => $twitter_result, 'timestamp' => time()); 
    file_put_contents('twitter_result.data', serialize($data)); 
} 
+0

Juste utilisé une variation de l'EDIT et ça marche si bien! – Coop

+0

c'est la solution pour la seule page, lol – Jasper