2009-06-04 9 views
6

Un client souhaite que j'ajoute son flux Twitter à la page d'accueil de son site Web, en utilisant une solution personnalisée construite en PHP. L'API Twitter a évidemment un nombre limité d'appels que vous pouvez faire par heure, donc je ne peux pas pinguer automatiquement Twitter chaque fois que quelqu'un actualise la page d'accueil de mon client.Quelle est la meilleure façon d'utiliser l'API Twitter via PHP?

Le site Web du client est purement HTML pour le moment et donc aucune base de données disponible. Ma solution doit donc uniquement requérir PHP et le système de fichiers local (par exemple en sauvegardant un fichier XML local contenant des données). Donc, compte tenu de ces critères limités, quelle est la meilleure façon pour moi d'accéder à l'API Twitter - via PHP - sans atteindre ma limite d'appel API en quelques minutes?

+0

Juste pour clarifier: Je ne demande pas aux gens d'écrire cela pour moi! :) Cela fait juste longtemps que je n'ai pas fait de PHP, alors j'essaie d'être au courant des meilleures pratiques pour résoudre ce problème très particulier. Un grand merci d'avance pour toute idée ou suggestion. – markedup

+0

"Système de fichiers local" - ce serait le serveur lui-même. "Configuration du serveur" - Je ne peux rien toucher d'autre que ce qui est accessible via FTP (donc pas de cPanel ou de cron, etc.). – markedup

+0

Désolé, "Configuration de serveur" doit être "Configuration du serveur". – markedup

Répondre

3

Il sera assez facile, une fois que vous pouvez tirer vers le bas une ligne de temps et l'afficher, pour ensuite ajouter un peu de mise en cache à base de fichiers à elle.

check age of cache 
Is it more than 5 mins old? 
    fetch the latest information 
    regenerate the HTML for output 
    save the finished HTML to disk 
display the cached pre-prepared HTML 

PEAR's Cache_Lite fera tout ce que vous avez besoin sur la couche de mise en cache.

0
  1. une tâche cron (non likley - s'il n'y a même pas une base de données, alors il n'y a pas d'emplois cron)
  2. écrire le microtime() dans un fichier. sur une page, comparez l'horodatage actuel à celui enregistré. la différence est supérieure à N minutes, tirez le nouveau tweetfeed et inscrivez l'horodatage actuel au fichier
  3. si la page d'accueil est un fichier html statique n'appelant aucun php, incluez une image <img src="scheduler.php"/> qui retourne un gp transparent 1px (at moins vous l'avez fait de cette façon quand j'étais jeune) et que votre twitter-tirant en silence

ou voulez-vous dire locale système de fichiers -local, comme dans « mon/l'ordinateur des clients non sur le serveur » -local?

dans ce cas:

  1. obtenir un serveur avec une tâche cron ou planificateur et PHP
  2. écrire un script qui lit et enregistre le flux dans un fichier
  3. écrire le fichier sur le serveur clients en utilisant FTP
  4. afficher le flux en utilisant javascript (oui, ajax fonctionne aussi avec des fichiers statiques comme sources de données). jquery ou une lib est grande pour cette
  5. ou: créer le tweet-affichage fichier html localement et le télécharger (mais attention ... parce que vous pouvez remplacer les mises à jour sur le serveur)

imo: pour les petits les sites que vous n'avez souvent pas besoin d'une base de données SQL entièrement développée de toute façon. les systèmes de fichiers sont géniaux. une combinaison de scandir, preg_match et des noms de fichiers choisis avec soin sont souvent suffisants.
et vous pouvez effectivement faire beaucoup de traitement frontal (comme l'affichage XML) en utilisant javascript belle.

0

Puisque nous ne connaissons pas la configuration de votre serveur, je vous suggère de configurer un travail cron (en supposant que vous êtes sur une machine Linux). Si vous avez quelque chose comme cPanel sur un environnement d'hébergement partagé, cela ne devrait pas poser de problème. Vous devez écrire un script appelé par cron pour obtenir les derniers tweets et les écrire dans un fichier (xml?). Vous pouvez planifier l'exécution de cron toutes les 30 minutes. ou ce que vous voulez.

0

Vous pouvez utiliser TweetPHP par Tim Davies. http://lab.lostpixel.net/classes/twitter/ - Cette classe a beaucoup de fonctionnalités, y compris celle que vous voulez, montrant la ligne de temps de vos clients. La page montre de bons exemples sur la façon de l'utiliser.

Vous pouvez ensuite mettre la sortie de ceci dans un fichier ou une base de données. Si vous souhaitez que le visiteur du site mette à jour la base de données ou le fichier toutes les 5 minutes, vous pouvez définir une variable de session contenant un horodatage et autoriser une autre mise à jour si l'horodatage date d'au moins 5 minutes.

Hope this helps

0

Ma suggestion: Créez un petit objet simple pour contenir la date du cache et un tableau de tweets. Chaque fois que quelqu'un visite la page, il exécute la logique suivante:

A) Le fichier existe-t-il?

Oui: lire dans une variable Non: Passez à l'étape D)

B) unserialize la variable (La paire PHP serialize()/unserialize() ferait très bien)

C) Comparez l'âge du cache stocké avec l'heure actuelle (un horodatage Unix le ferait) Il est plus de 5 minutes les uns des autres:

D) Obtenez les nouveaux tweets de Twitter, mettre à jour l'objet, sérialiser et écrire le cache à nouveau. Stocker les nouveaux tweets pour l'impression, aussi. Ce n'est pas: Il suffit de lire les tweets du cache.

E) Imprimer les tweets

simple et la meilleure façon de sérialiser l'objet est le serialize()/unserialize() paire. Si vous n'êtes pas prêt à mettre de côté l'effort pour faire l'objet, vous pouvez simplement utiliser le tableau 2D, serialize() fonctionnera très bien. Jetez un oeil sur http://php.net/serialize

Considérant que vous n'avez pas d'accès cPanel, c'est la meilleure solution puisque vous n'aurez pas accès aux paquets PEAR, cron ou à toute autre solution plus simple.

0
array(
'lastrequest' => 123, 
'tweets' => array() 
) 

maintenant dans votre code mis un chèque pour voir si l'horodatage dans le magasin de données pour lastrequest est plus de X secondes ancienne. S'il est alors temps de mettre à jour vos données.

sérialiser et de stocker le tableau dans un fichier, assez simple

Questions connexes