Etiquetas de PHP

Cualquier programa escrito en PHP debe estar contenido entre unas etiquetas determinadas. Hay cuatro tipos de etiquetas que indican bloques de código PHP:

<?php … ?>

<script language=»php»> … </script>

<? … ?> <?= … ?>

<% … %> <%= … %>

Las dos primeras están siempre disponibles, en cualquier sevidor donde esté instalado el interprete de PHP. El tercer grupo son las etiquetas abreviadas de PHP, solo están disponibles si está habilitado el parámetro short-open-tags (valor on) en el php.ini, lo mismo ocurre con las etiquetas de ASP (parámetro del php.ini asp_tags).

Aunque es posible su uso, se desaconseja usar las etiquetas cortas, puesto que si queremos usar XML ese es el formato con el que identifican los archivos XML. Lo más recomendable es usar la primera etiqueta, hará nuestros programas mucho más portables y nos ahorrará quebraderos de cabeza.

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.

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.

A2Billing: Programa de facturación para Asterisk

Asterisk es una centralita telefónica bajo software libre. Nos permite tener un sistema de telefonía IP bajo diferentes protocolos y con distintos proveedores. Todo esto nos da la posibilidad de ofrecer llamadas a otros usuarios, lo cual en algunos casos puede significar crear un negocio con esto.
Y como en cualquier negocio lo importante es poder facturar, en este caso en función del destino de la llamada, el horario o el tipo de servicio utilizado. Para lograrlo A2Billing provee un software a través de entorno web que nos permite definir precios, tramos horarios, etc. Esta herramienta está desarrollada bajo PHP y MySQL.

Preparando la Certificación de PHP

Desde hace unos meses estoy preparando la certificación de PHP, y ahora que se acerca el examen, me he propuesto dedicarle más horas. A cada nuevo capí­tulo que avanzo sobre el temario me doy cuenta de una cosa, para aprobar la certificación hay que saber las cosas al dedillo, no basta con saber programar.

Para los que no sepais de que va la Zend Certified Engineer (ZCE), podeis echar un vistazo en la página oficial de Zend. El examen consta de 70 preguntas y tienes 90 minutos para responderlas. Según me han comentado hace falta el tiempo, es mejor no pararse demasiado a pensar si no sabes la respuesta. Haciendo numeros sale a poco más de 1 minuto 28 segundos por pregunta.

El temario consta de 12 bloques temáticos: PHP Básico, Funciones, Arrays, Programación Orientada a Objetos, Seguridad, XML y Servicios Web, Cadenas y Modelos, Bases de Datos y SQL, Caracteristicas Web, Diferencias entre PHP4 y PHP5, Clases y Diseño y Teoria de Programación.

No se si el examen será tan duro como lo pinta el temario, pero desde luego pinta muy negro. Por mi parte pienso dedicarle bastantes horas estas dos semanas a prepararlo, después de pagar las taxas del examen no tengo ganas de suspender.