2011-09-09 4 views
0

J'ai un site avec beaucoup de nouvelles, mais je me demande s'il y a une façon que je peux trier mes articles par facebook aime? et comment puis-je le faire sans tuer mon serveur en mettant à jour tous les articles x fois dans une journée?Ordre par facebook aime (PHP)

premier je pensais faire quelque chose comme ça,

$source_url = "http://example.com/"; //This could be anything URL source including stripslashes($_POST['url']) 

$url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url); 
$xml = file_get_contents($url); 
$xml = simplexml_load_string($xml); 
$likes = $xml->link_stat->like_count; 

Mais cela tuer mon serveur si je l'ai fait une mise à jour sur tous mes articles ainsi ..

Toutes les suggestions ou des extraits que je peux regarder ? peut-être que je peux utiliser un peu de javascript ou quelque chose? ne sais pas.

+0

Que tuer votre serveur? Le fichier_get_contents? – ajreal

+0

Si je fais une demande, c'est bon, mais imaginez-vous faire avec plus de 1000 articles. On dirait que je vais pour une requête ajax quand ils cliquent sur le bouton. – Dexty

Répondre

1

Créer une table db pour contenir les likes facebook (URL, J'aime, Horodatage). Lors du chargement de la page, si Horodatage> maintenant + un certain laps de temps, rafraîchissez les J'aime dans la table. Les données pourraient être légèrement obsolètes, mais si vous aviez un temps de rafraîchissement de 5-10 minutes, je pense que ce serait assez proche la plupart du temps.

0

Eh bien tout d'abord, vous devez supprimer l'ancienne interface REST et passer au Graph API. Lorsque vous faites cela, vous pouvez obtenir des données pour plus d'un objet dans une seule requête, en spécifiant une liste séparée par des virgules des URL que vous voulez. Vous pouvez le faire à partir de PHP avec un simple GET, ou via Javascript avec un appel à FB.api().

Snippet du doc:

Vous pouvez également demander des objets multiples dans une seule requête à l'aide du paramètre de requête « ids ». Par exemple, l'URL https://graph.facebook.com?ids=arjun,vernal renvoie les deux profils dans la même réponse.

Le paramètre de requête "ids" accepte également les URL. Ceci est utile pour trouver les ID des URL dans le graphique ouvert. Par exemple: https://graph.facebook.com/?ids=http://www.imdb.com/title/tt0117500/

Dans tous les cas, si vous avez besoin d'accéder fréquemment à votre table, le meilleur (ou, plus probablement, seulement) solution est la mise en cache localement les données de Facebook.