2010-11-22 29 views
1

MISE À JOUR: J'ai décidé de suivre les conseils ci-dessous et de mettre en place un niveau Memcached dans mon application. Maintenant j'ai une autre pensée. Serait-il possible/une bonne idée de faire une requête AJAX sur un sondage (par exemple toutes les cinq ou dix minutes) qui vérifie Memcached, puis les mises à jour lorsque Memcached a expiré? De cette façon, la latence n'est jamais ressentie par l'utilisateur final car elle est exécutée silencieusement en arrière-plan. J'utilise l'API REST de Directed Edge pour faire des recommandations sur mon application Web. Le problème que je rencontre est que je demande un nombre important de recommandations à plusieurs endroits sur le site, et la latence est importante, ce qui fait que la page charge quelque chose comme 2-5 secondes pour chaque requête. Cela a l'air terrible.Comment puis-je mettre en cache des données dynamiques à partir d'une API REST en utilisant PHP?

Je n'utilise pas les liaisons PHP de Directed Edge, et j'utilise plutôt des liaisons PHP que j'ai écrites moi-même. You can see the bindings on GitHub. Je me connecte à leur API en utilisant cURL.

Comment puis-je mettre en cache les données que je reçois? Je suis ouvert à un certain nombre de méthodes tant qu'elles sont assez faciles à implémenter et assez flexibles.

Voici un exemple de code client pour obtenir des recommandations.

$de = new DirectedEdgeRest(); 
$item = "user".$uid; 
$limit = 100; 
$tags = "goal"; 
$recommendedGoals = $de->getRecommended($item, $tags, $limit); 

Répondre

2

Vous pouvez mettre en cache dans un fichier de la sérialisation et file_put_contents:

file_put_contents("my_cache", serialize($myObject)); 

Vous pouvez également cache memcached ou une base de données.

+0

Eh bien, j'espère ajouter un niveau memcached, mais pas encore. Cela vous dérange-t-il de me donner un aperçu de haut niveau de la façon dont cela fonctionnerait, avec un code ressemblant à «foo bar»? Juste curieux de savoir à quel point travailler avec memcached est vraiment difficile. –

+0

memcached est vraiment simple, vous avez juste besoin d'un serveur qui le supporte. Vous appelez memcache_set ("key", "value") quand vous voulez stocker quelque chose, et memcache_get ("key") quand vous voulez le récupérer. – robbrit

+0

Wow, c'est génial. Existe-t-il des conventions de nommage de clés particulières que vous utilisez vous-même? Comme un préfixe UUID ou UID ou quelque chose? –