|

Ventajas de usar mysqli

A la hora de realizar aplicaciones PHP/MySQL, normalmente se suele utilizar la librería mysql, cuando existe la librería mysqli, la cual puede ser más eficiente.

Os paso 4 motivos que a mí me han parecido muy importantes:

  • Prepared statements: a parte de ser más cómodo a la hora de montar nuestras querys, ofrece mucha seguridad contra el SQL injected.
$mysqli = new $stmt = $mysqli->prepare("select usuario from usuarios where i = ?");
$stmt->bind_param('i',$id);
$stmt->execute();
  • Conexiones seguras: la posibilidad de usar mysqli_ssl_set() permite realizar conexiones seguras indicando detalles del certificado mediante los parámetros.
  • Múltiples querys: posibilidad de ejecutar varias querys separadas por punto y coma, en una conexión.
  • Interfaz orientado a objetos: esta característica permite al desarrollador ampliar el objeto para añadir nuevas funcionalidades más específicas. Por ejemplo se podrían separar los errores de operación (conexión) a los de desarrollo (querys mal formadas).

The Four Major Benefits of MySQLi

Vía / dzone

|

My-BIC: otro framework Ajax

My-BIC es otro más de los numerosos frameworks que han aparecido para desarrollar aplicaciones Ajax. Ofrece 3 ficheros y un diseño que permite centrarte en realizar las cosas, más que en iniciar la tarea, siendo válido para PHP4 y PHP5.
Ofrece soporte para XML, JSON y texto en las transacciones Ajax, a parte de funcionar para Safari, Firefox, IE y Opera.
Dentro de las novedades que ofrece la recién versión 1.0, nos encontramos con: facilidad para trabajar con formularios, debug, integración con Firebug.
My-BIC
Vía / PHPDeveloper.org

Comprobar si un puerto está abierto con PHP

Algo que nos puede ser muy útil cuando estamos haciendo aplicaciones distribuidas, es saber si el puerto de una máquina está abierto. Otro ejemplo es que si queremos incluir contenido de otro sitio en nuestra página y no queremos que nos devuelva una página de error no personalizado, podemos hacer lo mismo, comprobar si está el puerto 80 abierto:

<?php
// Dominio a comprobar
$sitio = "www.dominio.com";
// Puerto a comprobar, el web es el 80
$puerto = 80;
$fp = fsockopen($sitio,$puerto,$errno,$errstr,10);
if(!$fp)
{
echo "No ha sido posible la conexión";
// El modo de tratamiento del error puede ser el que se quiera, por ejemplo enviar un email.
}else{
echo "Conexión realizada con éxito.";
fclose($fp);
}
?>

PHP port check

Más internacionalización mediante PHP

La internacionalización es un tema del que ya he hablado con anterioridad, pero para mí es algo fundamental, quizás sea por la cantidad de proyectos en los que he trabajado que necesitaban de esta funcionalidad, a veces, para mi gusto, mal tratada.
En el anterior artículo ya hablamos de arrays asociativos, un array con clave el código del texto que deseamos traducir (un buen uso sería el mismo texto en el idioma inicial), y con valor el texto traducido. Debería haber un texto para cada idioma y luego al inicio de la aplicación una asignación del array correspondiente para el idioma.
En el artículo que comentamos nos explican cómo realizarlo mediante el uso de la funciones gettext, una interfaz de programación NLS, y el uso de ficheros PO (un fichero de texto plano que contiene el texto original y el traducido).
Sobre este método me da que pensar sobre su rendimiento. PHP al ser interpretado, todo lo que se meta, se lee y se interpreta. Si no se usa caché para los php, es mejor no introducir código innecesario en nuestros scripts. Según parece, el array asociativo con las traducciones se leerá completo en cada ejecución, cuando en algunos casos no será necesario traducir ni la mitad de las palabras.
En algunos proyectos el diccionario era bastante extenso, por lo que me planteo posibles soluciones para optimizar el código. Una posibilidad es dividir en diccionario por grupos independientes, pero este método hace que gestionar los diccionarios sea una labor más complicada. La otra solución es una carga inicial en cada script de las palabras estrictamente necesarias, habría que evaluar si el tiempo de carga de las palabras necesarias (para lo cual es necesario una operación inicial) es inferior al tiempo de carga completo (tan solo leer e interpretar). ¿Qué pensáis vosotros?
Give your web app international appeal

patTemplate: sistema de plantillas para PHP

patTemplate es un sistema de plantillas para PHP que nos permite separar la lógica de negocio del contenido en nuestras aplicaciones web.
Desde el punto de vista del diseñador, patTemplate ofrece una serie de etiquetas XML para acceder a diferentes partes del diseño, las cuales se puede ocultar, intercambiar o repetir. Los diseñadores deberán aprender nuevas etiquetas, pero no es necesario conocer ningún lenguaje de programación, ni usar instrucciones condicionales o de repetición.
Para los desarrolladores, tan solo es necesario aprenderse el API, lo cual no es muy complicado para programadores con experiencia.
patTemplate

PHP 5.2.3 disponible

PHPHa salido a la luz la nueva versión de PHP, en esta ocasión se trata de la versión 5.2.3, siendo recomendable su instalación.
Esta nueva versión soluciona 6 cuestiones de seguridad, una de ellas es la función mysql_set_charset() la cual permite modificar la codificación de la conexión.
Además entre optimizaciones y correcciones de errores, hay más de 40 cambios más, destacando la mejora de las funciones md5() y sha1().
PHP 5.2.3 Release Announcement
Vía / iBlog – Ilia Alshanetsky

Convertir un vídeo a FLV mediante PHP

En las nuevas aplicaciones web2.0 se está siendo cada vez más frecuente el que los usuarios puedan subir sus vídeos para luego compartirlos. No sé donde leí hace poco que una de las grandes luchas que han ganado la gente de Flash es el uso de vídeos FLV sobre los otros formatos que existían antes.

Si queremos que nuestra aplicación convierta los vídeos a Flash, el script siguiente nos ayudará a realizar el proceso. Para ello necesitaremos FFMPEG-PHP, FFMPEG y FLVTool2.

phpflv.png

El proceso es sencillo: inicialmente, una vez subido el vídeo, se realiza una llamada a FFPMPEG-PHP para obtener datos del vídeo (ancho, alto y FPS) para luego llamar a FFMPEG con los datos obtenidos y empezar la codificación, realizando también una llamada a FLVTool2 para obtener información sobre el fichero resultante.

How to convert/encode files to FLV using FFMPEG & PHP

Vía / PHPDeveloper y Asier Marqués

|

Optimizaciones para Apache y PHP

La gente de IBM nos vuelve a ofrecer un artículo en el que nos explican como optimizar nuestro Apache y PHP para obtener mejores resultados en nuestras aplicaciones web.
El artículo está dividido en dos partes: una para configurar Apache y la otra para PHP, existe un documento anterior en el que explican la arquitectura LAMP y como configurar Linux.
Inicialmente para Apache nos explica cómo configurar el MPM (Multi-Processing Modules), el cual ayuda a manejar las conexiones entrantes y las salientes, podremos indicar el número máximo de clientes y el número de peticiones por hijo que tratará, entre otras cosas.
Algo también muy importante es configurar eficientemente las opciones o controles que se indican en los ficheros de configuración, y que controlan las reglas que debe seguir el servidor web con cada petición.
Por último, habrá que tener en cuenta en la configuración el número de conexiones que permanecerán activas para una llamada HTTP, así como el envío de la respuesta de forma comprimida (de esto ya hemos hablado en otras ocasiones, hay que decidir entre CPU usada en el servidor o respuestas más rápidas).
Sobre PHP nos indican la necesidad de usar opcode cache, representación binaria del script PHP que puede ser ejecutada. Para ello existen varios cachés disponibles, aunque recomiendan el uso de eAccelerator.
El resto de las recomendaciones se refieren a la configuración del tiempo máximo de ejecución, el tiempo máximo de espera de la entrada, la memoria máxima utilizada y al tamaño del buffer.
Optimizing Apache and PHP
Vía / Good PHP Tutorials

|

Listado de tutoriales de gestión de errores en PHP

Algo fundamental en cualquier aplicación web es la gestión de errores. Poder controlar los errores que se producen, no mostrar esos errores por pantalla, y poder hacer un seguimiento del error que se ha producido para poder solucionarlo, son cosas totalmente necesarias y que normalmente se suelen dejar a lado o solo usar en la época de desarrollo.

Para aquellos que quieran implementarse una clase que gestione los errores de su aplicación en PHP, le vendrá bien esta lista de tutoriales:

|

PHPLiveX: librería PHP y Ajax

PHPLiveX es una librería PHP que facilita la llamada desde Ajax a funciones PHP. Genera código Javascript que implementa funciones con los mismos nombres y argumentos dados en una lista de funciones PHP. Cuando el código Javascript generado es llamado, empieza la petición Ajax que invoca a su respectiva función PHP en el servidor.

Actualmente está probado para los navegadores Mozilla, Firefox, Internet Explorer y Opera. Su uso parece muy sencillo En el código PHP debes indicar la función:

<?php
function miFuncion($texto){
return $texto;
}
$plx = new PHPLiveX("miFuncion");
// También se puede hacer así
// $plx = new PHPLiveX();
// $plx->Export("miFuncion");
?>

Y luego en el HTML debes escribir lo siguiente:

<script type="text/javascript">
<? $plx->Run(); ?>
</script>

PHPLiveX

Vía / VT’s Tech Blog