PC Frikis

Beta, como Goooogle

Archive for the ‘Software Libre’ Category

APC y la cache de usuario

En un artículo anterior comentaba sobre el uso de APC para optimizar el rendimiento de los scripts PHP, de forma totalmente automática, sin modificar la programación. En ese caso APC se encargaba de almacenar una copia del bytecode de PHP para que en la próxima ejecución no fuese necesario interpretar de nuevo el código fuente.

Pero esa no es la única utilidad de APC, también se puede utilizar para almacenar en memoria por un tiempo determinado los datos que el programador desee. Este sistema es ideal para aplicaciones con mucha carga de base de datos ya que permite almacenar ciertos datos en memoria y aliviar la base de datos del sistema y por lo tanto, el disco duro (suponiendo que todos los servicios estén en la misma máquina).

Una vez instalado APC, tal como se explica en este otro artículo, el uso de la cache de usuario es extremadamente sencillo, básicamente hay que tener en cuenta dos funciones, apc_store y apc_fetch.

La función apc_store se encarga de almacenar datos en una determinada clave. Por ejemplo:

$datos = 5;
apc_store(‘datos’,$datos,86400);

Así de sencillo, con esa instrucción los datos quedarán guardados en memoria. El primer argumento es la clave que sirve para identificar los datos guardados y poder recuperarlos más tarde. El segundo parámetro son los valores que queremos guardar, ese parámetro puede ser cualquier variable PHP, desde enteros hasta arrays y objetos. El tercer argumento es el tiempo en segundos que APC mantendrá los datos en memoria. Superado ese tiempo los datos serán automáticamente borrados de la cache.

Ahora que los datos están en memoria, queda saber cómo recuperarlos. Es más sencillo todavía, se usa la función apc_fetch:

$datos = apc_fetch(‘datos’);

A la función apc_fetch simplemente hay que pasarle la clave de los datos que queremos recuperar. Si no ha encontrado los datos devolverá “false”.

Esto puede usarse para almacenar los resultados de consultas que sean pesadas y evitar que se ejecuten una y otra vez si no es necesario. Por ejemplo, vamos a suponer que la tabla “posts” es muy grande y cuesta mucho ordenarla y filtrarla:

$posts = apc_fetch(‘posts-2010-ene-11′); // Se busca el contenido en la cache
if(!$posts) {
// Si el contenido no existe, se genera de nuevo
$posts = array();
$result = mysql_query(“SELECT * FROM posts WHERE fecha = ‘2010-01-11′ ORDER BY titulo”);
while($row = mysql_fetch_assoc($result)) $posts[] = $row;
apc_store(‘posts-2010-ene-11′,$posts,300); // Se guardan los posts en la cache durante 5 minutos
}

Eso es todo, el uso de la cache de usuario de APC es muy sencillo. Hay algunas otras funciones que se pueden ver desde http://php.net/apc

También es interesante revisar el fichero apc.php para saber cómo está trabajando la cache.

Monitorizando APC

Monitorizando APC

Cada vez es más común adquirir ordenadores sin ningún tipo de lector de discos CD-ROM ya que la mayoría de archivos entran al ordenador a través de la red. Esto ocurre sobre todo en el caso de los netbooks, que por custiones de espacio no llevan integrado un lector de discos, pero no son los únicos, yo personalmente tengo un PC de sobremesa que tampoco tiene unidad lectora y por otra parte, donde trabajo, hemos comprado 24 máquinas que tampoco llevan CD-ROM.

El problema llega en el momento de instalar el sistema operativo, ya sea porque queremos cambiarlo, reinstalarlo o porque vayamos a hacer la primera instalación. Tradicionalmente la mayoría de sistemas operativos estaban preparados para arrancar únicamente desde CD o DVD pero ahora que las máquinas “optical disk free” se empiezan a popularizar es necesario realizar la instalación mediante otras vías.

La opción más sencilla para arrancar un sistema operativo, descartando el lector de discos, es mediante un dispositivo de almacenamiento USB y consiste en copiar una imagen del CD de instalación del sistema operativo en el pendrive o disco duro usb y decirle a la BIOS que arranque desde él.

La idea parece sencilla pero no siempre funciona, de hecho en algunos casos había que modificar incluso ficheros del propio sistema operativo pero poco a poco todos se van adaptando, Microsoft lanzó junto a Windows 7 una utilidad para grabar una imagen de CD en un pendrive USB y realizar la instalación del sistema desde él. En el mundo del software libre han empezado aparecer varias herramientas para realizar este cometido de las cuales me gustaría destacar UNetbootin.

UNetbootin es una aplicación que funciona tanto en Windows como en Linux y permite crear un pendrive arrancable de una gran selección de distribuciones linux en unos pocos clicks. No es necesario tener previamente descargada ninguna imagen, UNetbootin se encarga de descargar la imagen de la distribución que queramos. Además del gran surtido de distribuciones también ofrece la creación de pendrives con diversas utilidades como por ejemplo el CloneZilla (del que ya hablamos en otra ocasión), el Super Grub Disk u Ophcrack entre muchas otras.

Imágenes disponibles en UNetbootin

Imágenes disponibles en UNetbootin

También ofrece la posibilidad de instalar otros sistemas operativos como por ejemplo FreeDOS, FreeBSD o NetBSD. Por hacer una prueba voy a seleccionar FreeDOS, escojo la unidad del pendrive (cuidado con no seleccionar la unidad equivocada) y le doy a aceptar. UNetbootin empieza automáticamente a descargar la imagen:

UNetbootin descargando FreeDos

UNetbootin descargando FreeDOS

Una vez terminado solo queda introducir el pendrive en un puerto USB y al arrancar el ordenador indicarle a la placa base que debe utilizar el dispositivo USB para cargar el sistema operativo.

Menú de arranque de la BIOS

Menú de arranque de la BIOS

Finalmente aparece el menú de FreeDOS, que permite varias opciones, entre ellas instalarlo o arrancarlo en modo Live.

Menú de arranque de FreeDOS

Menú de arranque de FreeDOS

Este mismo proceso se puede seguir para cualquiera de los otros sitemas operativos o distribuciones que hay en la lista de UNetbootin.

Se puede obtener la última versión de UNetbootin desde su página oficial (http://unetbootin.sourceforge.net/)

Enlaces de Interés