Primera PHP Barcelona Workshop

Para el próximo 7 de junio de 2008, el grupo de programadores PHP de Barcelona han organizado la primera PHP Barcelona Workshop.Tal y como comentan ellos mismos tras la pasada Barcelona PHP Conference se habían quedado con ganas de algo más práctico y han organizado este conjunto de talleres de PHP.
Los talleres estarán dedicados a:

  • Construir una pequeña red social con Symfony
  • Trabajar con motores de workflow
  • internacionalización de proyectos PHP
  • VIM como IDE para PHP
  • Modernizar páginas con AJAX
  • Seguridad y Site-Cross-Scripting (XSS)

Desde la organización del evento se recomienda llevar un portatil con conexión wifi, soporte FTP, SMB o NFS, editor de código PHP, cliente SSH, cliente MySQL y navegador web.
La PHP Barcelona Workshop se celebrará en el Citilab de Cornellá y el aforo es de 200 personas. El precio de la asistencia es de 5 € por persona, un coste totalmente simbolico si tenemos en cuenta que se incluye la asistencia y comida.
El próximo sábado, entre las 9:30 y las 20:00 estaré completamente dedicado a PHP asistiendo a los talleres. A pesar de ser un evento totalmente recomendable, tengo una pequeña pega, por la mañana es necesario decidir a que taller queremos asistir entre dos propuestas, y a mi personalmente me gustaría asistir a ambas.

Instalar eAccelerator

Una de las formas de mejorar el rendimiento de un servidor con páginas web en PHP es la instalación de un sistema cache como módulo del intérprete de PHP instalado en el servidor. El uso de estos sistemas puede mejorar el rendimiento del servidor entre un 20% y un 50%. Entre los sistemas más populares que podemos encontrar se encuentran Zend Optimizer, IonCube o eAccelerator.
Vamos a centrarnos en éste último y veremos como instalarlo paso a paso sobre un servidor Linux desde los fuentes. Para poder compilar correctamente eAccelerator debes tener instalado phpize, en Fedora puedes obtenerlo usando yum install php-devel, en Debian apt-get install php-dev.
Lo primero es descargar el paguete correspondiente a la última versión de eAccelerator (en este caso la 0.9.5.3). Podemos elegir descargarlo en .tar.bz2 o .zip, usaremos el .tar.bz2 y lo descargamos, descomprimimos y entramos en el directorio:

wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar jvxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3

Una vez dentro del directorio, vamos a empezar a compilar los fuentes. Si sólo tienes un intérprete de PHP instalado (suele ser lo más habitual) puedes ejecutar:

phpize
./configure
make

En caso de tener más de una instalación deberás indicar donde se encuentra la que quieres usar. Sustituye la ruta en la primera línea (/usr/php) por aquella donde tengas instalado PHP:

PHP_PREFIX="/usr/php"
$PHP_PREFIX/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
make

Realizado esto ya tenemos el módulo preparado para su instalación, ejecutamos:
make install
Una vez terminada la instalación se nos mostrará la ruta donde se ha copiado el módulo del eAccelerator que debemos configurar en el php.ini, si todo ha ido bien debes tener algo como esto:

Installing shared extensions:    /usr/lib/php/modules/20080501/

Ahora debemos indicar en el php.ini nuestro nuevo módulo para que sea cargado con el intérprete. Abrimos el php.ini, si no sabes donde está localizado ejecuta phpinfo(). Editamos el archivo y buscamos una sección llamada "Dynamic Extensions". Buscamos una directiva llamada extension_dir y la definimos con la ruta donde guardamos las extensiones:

extension_dir = "/usr/php/modulos/"

A continuación agregamos las siguientes líneas que incluyen el nombre del módulo y su configuración:

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Guardamos el php.ini y ahora debemos crear el directorio temporal que usará eAccelerator, definido en la configuración que acabamos de agregar al php.ini como eaccelerator.cache, este directorio debe tener permisos de escritura:

mkdir /tmp/eaccelerator/
chmod 777 /tmp/eaccelerator/

Termidamo esto ya tenemos eAccelerator intalado en nuestro servidor. Sólo falta reiniciar apache para que la nueva configuración tenga efecto.

Ataques PDoS, daños en el hardware

A través de Alt1040, me entero de un nuevo tipo de ataques llamados PDoS (Permanent Denial-of-Service) que provocaría daños en el hardware, haciendole creer al sistema atacado que debe actualizar su firmware, provocando que no pueda volver a ser usado, ya que una restauración de software no sería suficiente.
Aunque por el momento es algo teórico, Rich Smith de HP System Security Lab, demostrará, el próximo 22 de mayo durante la celebración del EUSecWest en Londres, como algunos sistemas conectados a la red serían vulnerables a este tipo de ataques, según publica Dark Reading.

Captcha matemático

Vía el blog de Andrés Nieto leo un post en Isopixel sobre los 10 peores captchas de internet. Aunque todos tienen su aquel, el que más me ha llamado la atención es el que te pide resolver la derivada de una función trigronométrica. El captcha pertenece a una página matemática, por eso no es de extrañar que el captcha sea ese. De todos modos no es demasiado dificil resolvela y obtener el resultado, 0.

Calcular el tiempo de carga de una página en PHP

Es posible que deseemos conocer el tiempo de carga de una página en PHP, entre otras cosas por saber si está tardando demasiado tiempo en mostrarse al usuario, una de las reazones más frecuentes para que el usuario abandone la web y busque el resultado en otro sitio.

Al principio del documento debemos calcular el tiempo en el momento que comienza a cargarse la página, para ello colocamos el siguiente código:

<?php
// Inicio del documento
// Calculamos segundos y microsegundos desde Epoch Unix
$tiempo = microtime();
// Separamos en un array el tiempo en segundos y en microsegundos
$tiempo = explode(» «,$tiempo);
// Sumamos segundos y microsegundos
$tiempo_inicial = $tiempo[0] + $tiempo[1];
?>

Al final de la página, volvemos a calcular el tiempo en ese momento y calculamos la diferencia entre ambos, imprimiendo el resultado por pantalla.

<?php
// Fin del documento
$tiempo = microtime();
$tiempo = explode(» «,$tiempo);
// Calculamos en tiempo al final del documento
$tiempo_final = $tiempo[0] + $tiempo[1];
// Calculamos en tiempo de carga
$tiempo_carga = $tiempo_final – $tiempo_inicial;
// Redondeamos el valor del flotante a tres decimales
$tiempo_carga = round($tiempo_carga,3);
echo «Pagina generada en {$tiempo_carga} segundos»;
?>

Con esto ya tendríamos calculado el tiempo de carga de una página en PHP. Esto puede ser de gran utilidad para generar tiempos de carga y enviar el resultado a un log o hacer que nos envíe un correo si se supera un determinado tiempo de carga.

II Congreso ForumDominios.com

A través del blog de Carlos Blanco, me entero de que se ha abierto el plazo de inscripción para el II Congreso ForumDominios que se celebrará el 12 y 13 de junio en el Citilab de Cornellá (Barcelona).

"Entre las novedades que presenta el Congreso este año se encuentra la inclusión de talleres de carácter práctico. Además, la segunda jornada se desarrollará íntegramente en inglés y contará con la asistencia de algunos de los profesionales de dominios más relevantes del área internacional y también, por supuesto, de los patrocinadores principales del congreso: InterNetX y NameDrive. Si quieres más información sobre los contenidos también puedes visitar el Programa provisional del congreso o suscribirte al Blog ForumDominios.com donde irá apareciendo toda la información relativa al congreso."

El precio del evento es de 100 euros, todos aquellos que se registren antes del 28 de mayo tendrán un descuento de 20 euros