2010-02-17 12 views
5

Estoy usando simpleXML para ir a través de los resultados XML de un archivo XML de Twitter, pero estoy completamente perdido en cuanto al almacenamiento en caché de los resultados con PHP. This article parece ser de alguna ayuda, pero he encontrado memcache (y memcached. C'mon, namers.) También, y no tengo ni idea de qué hacer.Caché de datos para principiantes en PHP

estoy usando esto:

$sxml = simplexml_load_file(
    'http://api.twitter.com/1/qworky/lists/qworkyteam/statuses.xml'); 

foreach($sxml->status as $status){ 
    $name = $status->user->name; 
    $image = $status->user->profile_image_url; 
    $update = $status->text; 
    $url = "http://twitter.com/" . $status->user->screen_name; 
} 

simplemente almacenar los datos XML de una lista de Twitter en variables utilizables. Pero, ¿qué es lo correcto? Cree un archivo de caché y solo ejecute este bloque de PHP si el archivo de caché es anterior a diez minutos, de lo contrario, sirva las variables en caché. ¿Cómo paso las variables en caché de ida y vuelta entre el archivo almacenado en caché y el DOM? Diablos, ¿qué tipo de extensión y nombre de archivo tiene un archivo de caché?

Muchas gracias por cualquier forma que pueda indicarme una dirección saludable aquí.

Respuesta

8

Joshua eche un vistazo a this article sobre el simple almacenamiento en caché de PHP, puede hacer exactamente lo que ha descrito con relativa facilidad (y sí es probablemente la forma más sensata de hacerlo).

+0

¡Gracias fuego, ese artículo fue de gran ayuda! Terminé usando una modificación de esto: http://snipplr.com/view.php?codeview&id=13646 pero me pusiste en la dirección correcta. –

4

Como concepto general, caching no implica una estrategia para la implementación. La idea prevalente es que usted almacena la información en algún lugar que le proporciona un acceso más eficiente que desde donde obtuvo los datos originalmente.

Por lo tanto, en este caso, es más eficiente obtener los datos del disco que volver a consultar Twitter (generalmente, la red latency es mayor que la latencia IO del disco).

Además, obtener datos de la memoria es más eficiente que obtener la información del disco (porque la latencia de la memoria es menor que la latencia IO del disco).

Dicho esto, puede almacenar los valores de Twitter en la memoria, si lo desea, o en un archivo en el disco, si necesita que los valores persistan más allá de decir, un cierre. Cómo lo hace depende de usted (disco o memoria, extensiones, formato, etc., etc.). Es tu caché.

Lo que hay que tener cuidado es la caché que se está agotando. Aquí es cuando la información que tienes en tu caché no está sincronizada con la fuente de datos original. Debe determinar qué tan obsoletos son los datos obsoletos y volver a consultar, según corresponda, reemplazando sus valores de caché.

+0

Muchas gracias por una respuesta completa, casper. Esto ayudó más allá de solo "cómo". Terminé yendo con una solución de PHP que reescribe un archivo XML si crece más de 10 minutos. ¿Alguna razón particular por la que crees que debería tenerle miedo a esta configuración? Parece sensible a la API al tiempo que mantiene datos relativamente recientes. –