nov 282012
 

Un servidor Apache que se ejecuta en modo de multiproceso worker, crea un cierto número de procesos hijo para atender las solicitudes entrantes. A su vez, cada uno de los procesos ejecuta varios threads entre los que distribuye la carga. Para optimizar el uso de recursos disponibles, hay que configurar adecuadamente el número de procesos y threads que se ejecutan en el servidor.

Seguir leyendo »

 Publicado por en 8:10 pm
nov 242012
 

Al ejecutar una sentencia INSERT de más de un registro sobre una tabla con clave única, puede ocurrir que alguno de los registros a insertar tenga el mismo valor de la clave que otro registro ya existente en la tabla. Por defecto, esto hace que la sentencia entera falle con un mensaje de error “execute failed: Duplicate entry”. En este caso, no se inserta ningún registro, ni siquiera los que tienen claves que no están en conflicto con los registros existentes previamente.

Seguir leyendo »

 Publicado por en 12:33 pm
nov 212012
 

Durante mucho tiempo, PHP ha carecido de la funcionalidad para escribir programas con varios hilos de ejecución simultáneos.

Actualmente, es posible instalar un intérprete de PHP con soporte para pthreads (POSIX threads) aunque las distribuciones estándard de PHP no lo incluyen. Para conseguirlo es necesario compilar el intérprete a partir del código fuente, incluyendo la opción “–enable-maintainer-zts” (–enable-zts en Windows). Pero esto sólo sirve para que el intérprete sea “thread-safe” y funcione bajo un servidor Apache con multithreading (Worker MPM), en vez de en un servidor Apache multiproceso (Pre-fork MPM). Por otra parte, se suele desaconsejar este tipo de instalación, porque aunque el núcleo de PHP sea thread-safe, puede que cualquiera de la extensiones que se utilicen no lo sea.

En este artículo vamos a explorar las distintas posibilidades para la implementación de scripts multihilo en PHP, y las consideraciones que hay que tener en cuenta al hacerlo.

Seguir leyendo »

 Publicado por en 9:11 pm
nov 212012
 

Un caso típico en donde puede ser necesario establecer un tiempo límite de respuesta es el de un servidor que se comunica con uno o varios clientes a través de la red.

El servidor envía mensajes a los clientes, y espera a que éstos respondan. Pero puede haber problemas de red, o bien alguno de los clientes no responde por alguna otra razón, y esto no debe bloquear la ejecución del servidor para el resto de los clientes.

Seguir leyendo »

 Publicado por en 8:43 pm
nov 212012
 

La función “alarm” de perl permite ejecutar una subrutina cuando ha transcurrido el tiempo que se le ha indicado como argumento.

Haciendo uso de ella, podemos implementar una función para solicitar una respuesta al usuario, pero si éste no responde pasado un tiempo, continúa la ejecución del script.

El código de esta función es el siguiente:

Seguir leyendo »

 Publicado por en 7:57 pm
nov 192012
 

Mediante la programación multihilo, un programa puede ejecutar simultáneamente distintas tareas, optimizando el uso de los recursos disponibles en el sistema y disminuyendo el tiempo total de ejecución. Así, mientras un hilo puede estar ejecutando un proceso intensivo de cálculo, otro hilo puede estar realizando una operación de entrada/salida a disco. Un tercer hilo puede estar realizando una consulta a una base de datos que quizá reside en otro servidor, y un cuatro hilo puede estar descargando contenidos de la red.

En este artículo vamos a revisar los conceptos básicos de la programación multihilo y vamos a ver ejemplo de implementación en lenguaje Perl.

Seguir leyendo »

 Publicado por en 12:46 pm
nov 172012
 

Una red domótica KNX puede conectarse a una red IP mediante un dispositivo denominado IP Router.

El IP router se comunica con un servidor externo mediante el intercambio de paquetes UDP. Los paquetes intercambiados incluyen un “identificador de sesión” (channelid), y están numerados, de manera que un paquete con un número fuera de secuencia es descartado.

En este artículo analizamos los paquetes intercambiados entre un servidor eibd y un IP router implementado en software ( ”tweety”). Además, simulamos el envío de órdenes mediante el comando groupswrite que se incluye en la distribución de eibd.

Seguir leyendo »

 Publicado por en 7:00 pm
nov 162012
 

Conforme ha ido evolucionando su desarrollo, han aparecido distintas versiones del sistema operativo Android. Cada nueva versión corrije errores, incorpora mejoras de rendimiento, añade nuevas funcionalidades y soporta nuevos dispositivos, como los tablets. Las versiones del sistema tienen un identificador numérico (p.ej., 2.3.5), y también un nombre (Froyo, Gingerbread,…)

En paralelo, el API de programación ha ido evolucionando para dar acceso a las nuevas funcionalidades presentes en las nuevas versiones. Las versiones del API se identifican simplemente con un número entero (API 10, API 16,…)

Pero no existe una correspondencia uno a uno entre una versión del sistema y una versión del API. La siguiente tabla presenta la correspondencia entre versiones del sistema y del API:

Seguir leyendo »

 Publicado por en 2:52 pm