2009-06-04 18 views
6

Un cliente desea que agregue su secuencia de Twitter a la página de inicio de su sitio web, utilizando una solución personalizada integrada en PHP.¿Cuál es la mejor manera de usar la API de Twitter a través de PHP?

La API de Twitter obviamente tiene un número limitado de llamadas que puede hacer por hora, por lo que no puedo hacer ping automáticamente cada vez que alguien actualiza la página de inicio de mi cliente.

El sitio web del cliente es puramente HTML en este momento, por lo que existe sin base de datos disponible. Por lo tanto, mi solución solo requiere PHP y el sistema de archivos local (por ejemplo, guardar un archivo XML local con algunos datos).

Entonces, teniendo en cuenta este criterio limitado, ¿cuál es la mejor manera de acceder a la API de Twitter, a través de PHP, sin tocar el límite de mi llamada API en unos minutos?

+0

Solo para aclarar: No estoy pidiendo a la gente a escribir esto para mí! :) Hace mucho tiempo que no uso PHP, así que estoy tratando de ponerme al día sobre las mejores prácticas para abordar este problema tan particular. Muchas gracias de antemano por cualquier idea o sugerencia. – markedup

+0

"Sistema de archivos local": este sería el servidor en sí. "Configuración de Sever": no puedo tocar nada que no sea lo que se puede acceder a través de FTP (por lo que no hay cPanel ni cron, etc.). – markedup

+0

Lo sentimos, "Configuración de Sever" debería ser "Configuración del servidor". – markedup

Respuesta

3

Será muy fácil, una vez que se puede tirar abajo una línea de tiempo y mostrarlo, a continuación, añadir un poco basado en archivos de almacenamiento en caché a la misma.

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 va a hacer todo lo que necesita en la capa de almacenamiento en caché.

0
  1. una tarea programada (no likley - si no hay ni siquiera una base de datos, entonces no hay trabajo cron)
  2. escribir la microtime() en un archivo. en una vista de página, compare la marca de tiempo actual con la fecha de guardado. es la diferencia mayor que N minutos, extrae el nuevo tweetfeed y escribe la marca de tiempo actual en el archivo
  3. si la página frontal es un archivo html estático que no llama a ningún php, incluye una imagen <img src="scheduler.php"/> que devuelve un gif transparente 1px (en menos que lo hizo de esta manera cuando yo era joven) y hace su twitter-tirando de silencio

o quiere usted decir sistema de archivos local de -local, como en "mi/el equipo clientes no el servidor" -local?

en este caso:

  1. obtener algún servidor con una tarea programada o planificador y PHP
  2. escribir un script que lee y guarda la alimentación a un archivo
  3. escribir el archivo en el servidor de clientes utilizando FTP
  4. muestra el feed utilizando javascript (sí, ajax también funciona con archivos estáticos como fuentes de datos). jQuery o algún lib es ideal para esto
  5. o: crear el archivo html pío-exhibición localmente y subirlo (pero tenga cuidado ... porque es posible sobrescribir actualizaciones en el servidor)

IMO: para los pequeños sitios que a menudo simplemente no necesitan una base de datos sql completamente crecido de todos modos. los sistemas de archivos son geniales. una combinación de scandir, preg_match y los nombres de archivo cuidadosamente seleccionados a menudo son lo suficientemente buenos.
y realmente se puede hacer un montón de procesamiento de entrada (como mostrar XML) usando bellas javascript.

0

Dado que no conocemos la configuración de su servidor, le sugiero que configure una tarea cron (suponiendo que esté en una caja Linux). Si tiene algo así como cPanel en un entorno de alojamiento compartido, no debería ser un gran problema. Necesita escribir un script que cron llame y obtenga los últimos tweets y los escriba en un archivo (xml?). Puede programar que cron se ejecute cada 30 min. o lo que quieras

0

Es posible que desee utilizar TweetPHP por Tim Davies. http://lab.lostpixel.net/classes/twitter/ - Esta clase tiene muchas características, incluida la que desea, que muestra la línea de tiempo de sus clientes. La página muestra buenos ejemplos sobre cómo usarlo.

A continuación, puede poner el resultado de esto en un archivo o base de datos. Si desea que el visitante del sitio actualice la base de datos o el archivo como cada 5 minutos, puede establecer una variable de sesión con una marca de tiempo y simplemente permitir otra actualización si la marca de tiempo fue hace al menos 5 minutos.

Esperanza esto ayuda

0

Mi sugerencia: crea un pequeño objeto simple para contener la fecha de caché y una matriz de tweets. Cada vez que alguien visita la página, realiza la siguiente lógica:

A) ¿Existe el archivo?

Sí: Leer en una variable No: Pasar a la etapa d)

B) unserialize la variable (La serialización par PHP()/unserialize() podría hacer muy bien)

C) Compare la edad del caché almacenado con la hora actual (una marca de tiempo Unix lo haría) Son más de 5 minutos el uno del otro:

D) Obtenga los últimos tweets de Twitter, actualice el objeto, serialícelo y escriba la memoria caché de nuevo. Almacene los tweets más nuevos para imprimir, también. No es así: solo lea los tweets del caché.

E) Imprimir los tweets

más simple y más fácil de serializar el objeto es el serialize()/unserialize() par. Si no está dispuesto a posponer el esfuerzo de crear el objeto, puede usar una matriz 2D, serializar() funcionará perfectamente. Eche un vistazo en http://php.net/serialize

Considerando que no tiene acceso a cPanel, es la mejor solución ya que no tendrá acceso a paquetes PEAR, cron u otras soluciones más simples.

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

ahora en su código puso una comprobación para ver si la marca de tiempo en el almacén de datos para lastrequest es más de X segundos de edad. Si es entonces, es hora de actualizar sus datos.

serializar y almacenar la matriz en un archivo, bastante simple

Cuestiones relacionadas