usando un archivo de texto plano como base de datos

5
Usando un archivo de texto plano como base de datos: alternativa ligera a SQL 10 de mayo de 2013 Hay aplicaciones web para las que una base de datos SQL se le queda grande. Una base de datos SQL necesita un servidor de base de datos que consume no pocos recursos en nuestra máquina; además la base de datos necesita ser creada, junto a los usuarios y sus permisos, hace falta configurar correctamente codificaciones, crear las diferentes tablas… Por otro lado, aunque los archivos SQL son archivos de texto plano, su edición manual, sin utilizar los comandos que proveé un intérprete, como PHP por ejemplo, es tediosa. Para utilizar un conjunto de datos ya generado, generalmente hay que programar un script que los formatee según la sintaxis SQL para poder insertarlos en la base de datos. ¿Por qué no utilizar un archivo de texto plano como base de datos? Esto nos ahorra todo el trabajo relacionado con el servidor de base de datos. Además permite trabajar directamente con un archivo editable por una persona. Las aplicaciones web que usan este sistema no necesitan instalación propiamente dicha, basta con subir unos archivos PHP a nuestro servidor web. Actualizar el contenido de la página es tan fácil como editar un archivo de texto y subirlo.

Upload: bolivar-orbe-robles

Post on 30-Jan-2016

217 views

Category:

Documents


0 download

DESCRIPTION

Archivos de texto

TRANSCRIPT

Page 1: Usando Un Archivo de Texto Plano Como Base de Datos

Usando un archivo de texto plano como base de datos: alternativa ligera a SQL10 de mayo de 2013

Hay aplicaciones web para las que una base de datos SQL se le queda

grande. Una base de datos SQL necesita un servidor de base de datos que

consume no pocos recursos en nuestra máquina; además la base de datos

necesita ser creada, junto a los usuarios y sus permisos, hace falta configurar

correctamente codificaciones, crear las diferentes tablas…

Por otro lado, aunque los archivos SQL son archivos de texto plano, su edición

manual, sin utilizar los comandos que proveé un intérprete, como PHP por

ejemplo, es tediosa. Para utilizar un conjunto de datos ya generado,

generalmente hay que programar un script que los formatee según la sintaxis

SQL para poder insertarlos en la base de datos.

¿Por qué no utilizar un archivo de texto plano como base de datos?Esto

nos ahorra todo el trabajo relacionado con el servidor de base de datos.

Además permite trabajar directamente con un archivo editable por una

persona.

Las aplicaciones web que usan este sistema no necesitan instalación

propiamente dicha, basta con subir unos archivos PHP a nuestro servidor web.

Actualizar el contenido de la página es tan fácil como editar un archivo de texto

y subirlo.

Como con una base de datos SQL, seguimos disfrutando de las ventajas de

tener los datos y el código separados. Casi todas las aplicaciones para manejar

datos permiten exportar a un archivo de texto plano, tipo CSV, lo cual evita

tener que programar un conversor para incorporar datos de manera masiva a

nuestra aplicación web.

Todo ventajas. Vamos a ver cómo podemos ponerlo en práctica.

Page 2: Usando Un Archivo de Texto Plano Como Base de Datos

PHP incluye un conjunto de comandos para comunicarse con un archivo de

texto: abrirlo, leerlo y escribir en él. A grandes rasgos todo lo que tenemos que

hacer es:

Seguir un orden a la hora de guardar los datos en el archivo de texto, generar

una estructura que PHP pueda interpretar.

Acceder a los datos del archivo desde PHP y ordenarlos en una matriz para

poder usarlos.

Recorrer la matriz con un loop para generar la salida HTML.

La base de datos: el archivo de texto plano

Como ejemplo vamos a pensar en un archivo llamado contactos.txtque, a

modo de agenda, contiene información sobre nuestros contactos. Una buena

manera de estructurar los datos podría ser la siguiente:

Nombre contacto 1|email contacto 1|website contacto 1|teléfono

contacto 1

Nombre contacto 2|email contacto 2|website contacto 2|teléfono

contacto 2

Básicamente nos tenemos que preocupar de que en cada línea haya un registro

(un contacto en nuestro ejemplo), que cada columna siempre contenga el

mismo tipo de información, y que las celdas estén separadas siempre por el

mismo caracter, a ser posible que no vayamos a usar en su contenido.

Accediendo a los datos del archivo con PHP

Para acceder al archivo usamos la función fopen() de PHP. El

parámetro r indica que estamos abriendo el archivo solo para leer su contenido

y coloca el puntero que lo irá recorriendo al principio.

1 $fp = fopen('contactos.txt','r');

2 if (!$fp) {echo 'ERROR: No ha sido posible abrir el archivo. Revisa su nombre y sus permisos.'; exit;}

Una vez leído el archivo desde PHP y extraída la información, lo cerramos

con fclose():

1 fclose($fp);

Para que PHP pueda acceder al archivo, tenemos que asegurarnos de que los

permisos del archivo estén correctamente configurados y la ruta que

Page 3: Usando Un Archivo de Texto Plano Como Base de Datos

proporcionamos a la función fopen sea correcta. La entrada del manual de

php.net sobre fopen contiene información detallada sobre posibles problemas.

Montando el loop y generando la salida HTML

1 $loop = 0; // contador de líneas

2 while (!feof($fp)) { // loop hasta que se llegue al final del archivo

3 $loop++;

4 $line = fgets($fp); // guardamos toda la línea en $line como un string5 // dividimos $line en sus celdas, separadas por el caracter |

6 // e incorporamos la línea a la matriz $field

7 $field[$loop] = explode ('|', $line);

8 // generamos la salida HTML

9 echo '

10  <div>

11   <div>Nombre: '.$field[$loop][0].'</div>

12   <div>Email: '.$field[$loop][1].'</div>

13   <div>Website: '.$field[$loop][2].'</div>

14   <div>Teléfono: '.$field[$loop][3].'</div>15  </div>

16 ';

17 $fp++; // necesitamos llevar el puntero del archivo a la siguiente línea

18 }

La función feof() comprueba si el puntero que recorre el archivo ha llegado

al final de éste.

La función fgets() devuelve la línea completa en la que esté situado el

puntero del archivo. Podemos limitar la salida de fgets en bits (1024, 2048…)

si las líneas son largas y no las necesitamos completas.

El código completo:

1 $fp = fopen('contactos.txt','r');

2 if (!$fp) {echo 'ERROR: No ha sido posible abrir el archivo. Revisa su nombre y sus permisos.'; exit;}

3  

4 $loop = 0; // contador de líneas5 while (!feof($fp)) { // loop hasta que se llegue al final del archivo

6 $loop++;

Page 4: Usando Un Archivo de Texto Plano Como Base de Datos

7 $line = fgets($fp); // guardamos toda la línea en $line como un string

8 // dividimos $line en sus celdas, separadas por el caracter |

9 // e incorporamos la línea a la matriz $field

10 $field[$loop] = explode ('|', $line);

11 // generamos la salida HTML

12 echo '

13  <div>

14   <div>Nombre: '.$field[$loop][0].'</div>

15   <div>Email: '.$field[$loop][1].'</div>

16   <div>Website: '.$field[$loop][2].'</div>17   <div>Teléfono: '.$field[$loop][3].'</div>

18  </div>

19 ';

20 $fp++; // necesitamos llevar el puntero del archivo a la siguiente línea

21 }

22  

23 fclose($fp);

Casi todo este manual está basado en el estupendo artículo sobre el tema

publicado en designdetector.

Contexto

Desarrollo web, base de

datos, CSV, fclose, feof, fgets, fopen, MySQL,opendata, PHP, sql

Autor

Alfonso Sánchez Uzábal

, aka skotperez

Contenido relacionado

Cómo pasar variables de una página a otra en una web con PHP

Script para monitorizar y reiniciar automáticamente el servidor de base de

datos mysql en caso de fallo

Cómo ejecutar PHP periódicamente con cron en un servidor Linux

Comparar fechas en PHP. Contenido con caducidad en WordPress

Howto sobre $wpdb: cómo consultar, insertar o modificar la base de datos a

voluntad en WordPress

Compartir