488 subscripciones por RSS o por E-mail

PHP for Android

PHPforAndroid

Unos ingenieros españoles desarrollaron una extensión para Android que permite crear programas para los teléfonos inteligentes que usen ese sistema operativo de Google usando nuestro querido lenguaje para la web.

Para hacerlo posible, el proyecto de PHP for Android hace uso del Scripting Layer for Android (SL4A), una capa de software que permite a lenguajes de scripting (como Python, Perl, Lua, etc.) acceder a los recursos de un dispositivo Android, como el módulo de Bluetooth y los objetos de la GUI. El SL4A debe ser instalado antes de poder ejecutar un programa escrito con PHP for Android, lo que en sí es un procedimiento bastante fácil, como se demuestra en este video.

Además de un entorno de ejecución, el SL4A también ofrece su propio editor, lo que permite modificar los programas de PHP en el mismo teléfono.


PHP-PFM incluído en PHP 5.3

Finalmente PHP-FPM (FastCGI Process Manager), la implementación alternativa de FastCGI para PHP, se consideró lo suficientemente estable como para incluirse en el árbol actual de PHP 5.3, a pesar de que en este momento a esa versión sólo pueden agregársele correcciones de errores.

El anuncio dice que el parche está en el directorio sapi/fpm del árbol del código fuente de los más recientes "snaps" de PHP 5.3 para quienes quieran compilarlo a mano. También, por lo menos las distribuciones de GNU/Linux más actualizadas como Gentoo, ya están comenzando a incluirlo en sus paquetes binarios.

Como dijimos antes, parche de PHP-FPM para PHP se encarga de iniciar, detener y reiniciar los procesos de FastCGI según sea necesario, lo que lo hace muy atractivo, por ejemplo, para poder usarlo en sitios de enormes cargas con servidores muy eficientes como Nginx o Lighttpd.


¿PHP-FPM a PHP 5.4?

No será para PHP 5.3.3, pero muy probablemente la próxima versión 5.4 de PHP incluya el parche de PHP-FPM (FastCGI Process Manager), que como su nombre lo sugiere es una implementación alternativa de FastCGI para PHP que además agrega algunas características adicionales útiles para sitios de cualquier tamaño, especialmente aquellos con más tráfico.

El parche de PHP-FPM para el núcleo mismo de PHP se encarga de iniciar, detener y reiniciar los procesos de FastCGI según sea necesario, y por eso mismo sería muy atractivo, por ejemplo, para poder usar PHP con el muy eficiente servidor web Nginx. Esto también traería algunas ventajas sobre la alternativa típica de correr PHP como un módulo de Apache, entre ellas:

  • Menor consumo de memoria.
  • Más fácil administración de permisos.
  • Si PHP se cae, Nginx puede continuar funcionando.

Si el parche es aceptado, activarlo sería tan fácil como compilar PHP con la opción --enable-fpm, lo que haría la vida de los administradores mucho más fácil a la hora de montar PHP sobre cualquier servidor que soporte FastCGI.


KDevelop 4.0 con plugins para PHP

kdev

El proyecto de KDE anunció así la disponibilidad de la versión 4.0 estable de su principal entorno de desarrollo integrado (IDE) KDevelop, que tiene una importante novedad para todos los desarrolladores web: se trata de primer lanzamiento que incluye la primer versión de sus plugins para PHP.

Aunque KDevelop está diseñado para ser un excelente IDE de C++, el soporte para otros lenguajes de programación también está dentro de sus planes, y con esta nueva versión 4.0 confían en que esto sea más fácil que nunca antes, comenzando con PHP.

Gracias a estos plugins los errores de sintáxis son reportados a medidas que se escriben, proyectos completos son semánticamente analizados (incluyendo comentarios) para sugerir parámetros y valores de retorno y se ofrece un extenso auto-completado de código con sólido soporte de OOP. Además, KDevelop 4.0 soporta navegación contextual y resaltado sintáctico, integración con la documentación de PHP.net y "ganchos" con los plugins de QuickOpen y el navegador de clases.

Una buena colección de capturas de pantalla demostrado las anteriores características se encuentra por aquí. El código fuente de KDevelop 4.0 ya se encuentra en sus Mirrors, así que los paquetes binarios para las principales distribuciones de GNU/Linux y Windows no tardarán en aparecer.


phpreboot

Con el anunciado "reseteo" de PHP6 su futuro parece por lo menos inicierto, pero afortunadamente eso no detiene a los más motivados desarrolladores a crear sus propias versiones de lo que consideran que debería ser el próximo PHP. Y una de las más rápidas para implementarlo es sobre una máquina virtual de Java (JVM) como ya lo hacen con otros lenguajes proyectos como Jython o Groovy.

Uno de esos nuevos proyectos es phpreboot, literalmente un reboot de PHP que quiere mantener la filosofía original del lenguaje, pero actualizarlo para ponerlo más a tono con la web del 2010. Algunas de sus características completadas hasta ahora incluyen:

  • Menos $ y menos ;, como en JavaScript.
  • Soporte completo de Unicode (gracias a Java).
  • Sintaxis compatible con SQL; JSON y XML literales.
  • Incluye la base de datos embebible Derby y el servidor web Grizzly.
  • Seguro por defecto: sin eval(), sin magic_quotes ni interpolación de cadenas de caracteres.

Y como un ejemplo vale mil palabras, aquí tenemos una consulta SQL usando variales comunes:

n = 3
a = select name from foo where id < $n
foreach(a as key: value) {
  echo "row: " + key + " name: " + value.name
}

Y así se vería el código HTML/XML mezclado con SQL:

<html>
 <body>
  <ol>
   {
     resultset = select * from foo
     foreach(resultset as value)
     {
       echo <li>$(value.name)</li>
     }
   }
  </ol>
 </body>
</html>

Más ejemplos de los que esperamos que se inspiren los desarrolladores oficiales de PHP por aquí.


Video: Presentación de HipHop for PHP

Finalmente ya está disponible el video de la presentación oficial de HipHop for PHP realizada en los cuarteles generales de Facebook en Palo Alto, California, el día de ayer. Durante el acontecimiento se revelaron algunos datos muy interesantes del proyecto, como por ejemplo, que comenzaron a implementarlo en sus servidores de producción desde hace 6 meses, y que actualmente Facebook ya sirve un 90% de su contenido con HipHop.

También resumieron su necesidad para iniciar este proyecto en estos cuatro motivos:

  1. PHP tiene un alto uso del CPU.
  2. PHP tiene un alto consumo de memoria.
  3. Querían reusar la lógica de PHP en otros sistemas.
  4. Las extensiones son difíciles de escribir para la mayoría de los programadores de PHP.

Pero además de HipHop, también crearon HPHPi, que es un intérprete experimental diseñado para la etapa de desarrollo de nuevas funcionalidades para Facebook. Con HPHPi no es necesario compilar el código de PHP antes de ejecutarlo en HipHop, permitiendo de esta manera detectar errores prematuramente sin cambiar la forma en la que codifican con PHP.

Las más de 300.000 líneas de código y más de 5.000 Unit Tests de HipHop se publicarán en la cuenta de Facebook en Github, y su repositorio estará hospedado en la dirección github.com/facebook/hiphop-php, aunque al momento de escribir esto todavía no está disponible.


Facebook presenta HipHop for PHP

Por una vez los rumores resultaron ser ciertos y exactamente tal como se esperaba Facebook anunció hoy el lanzamiento de HipHop para PHP. Según el ingeniero Haiping Zhao, HipHop les permitió reducir el uso del CPU en sus servidores en un promedio del 50%, dependiendo de la página, resultando en un enorme impacto para todo el sitio de Facebook.

Aunque HipHop se estuvo desarrollándose durante los últimos 2 años, reconocen que todavía no está completo, y la calidad de su código actual puede considerarse como "Beta". Liberarlo bajo la misma licencia de PHP permitiría a su comunidad completar el trabajo, y al mismo tiempo ofrecer un nuevo enfoque a la hora de escalar sitios muy complejos.

¿Pero qué es exactamente HipHop? Según el mismo Zhao:

“HipHop no es técnicamente un compilador. En su lugar es un transformador de código. HipHop transforma tu código fuente PHP en un altamente optimizado código C++ y luego usa g++ (GNU C++) para compilarlo. HipHop ejecuta el código fuente en una manera semánticamente equivalente y sacrifica algunas características raramente usadas -como eval()- a cambio de una performance mejorada. HipHop incluye el transformador de código, una reimplementación del runtime de PHP y una re-escritura de varias extensiones de PHP comunes para aprovechar estas optimizaciones”.


¿Facebook presentará un "compilador de PHP" este Martes?

Facebook

Aprovechamos esta jornada dominical para suspender nuestra objetividad y hacernos eco de esta noticia relacionada con el reciente rumor sobre los desarrollos internos en Facebook relacionados con el lenguaje PHP.

Ahora se dice que el equipo del núcleo de PHP fué invitado al campus de Facebook y, después de obligarlos a firmar un NDA (Non-Disclosure Agreement), se les demostró el nuevo proyecto Open Source del gigante de las redes sociales. Aparentemente, este próximo Martes Facebook presentaría oficialmente el proyecto bajo una licencia de código abierto. Y se trataría, ni más ni menos, de "algún tipo de compilador para PHP".

La idea no parece del todo descabellada, pues con los más de 350 millones de usuarios que debe soportar Facebook, cualquier pequeña mejora en el desempeño de PHP tendría un gran impacto en toda su infraestructura.


¿Facebook está creando un Hyper-PHP compilado?

Un bloggero publica partes de una informal entrevista realizada a una amiga y empleada de hace 2 años de Facebook en el marco de la reciente mudanza de esa empresa a Stanford Research Park, lugar que alguna vez fué el hogar de gigantes como Hewlett-Packard, General Electric y Lockheed.

Pero lo que nos interesa de la entrevista es la mención sobre los desarrollos internos que Facebook estaría realizando sobre el mismo lenguaje de PHP:

- ¿Cuéntame un poco sobre los ingenieros de Facebook?

“Son extraños, pero muy inteligentes. Por ejemplo, hay uno que escencialmente está re-escribiendo por su propia cuenta todo el sitio. Nuestro sitio está codificado, yo diría, en un 90% con PHP. Él está creando HPHP, Hyper-PHP, lo que significa que literalementa está re-escribiendo el lenguaje completo.

Hay una diferencia entre codificar en un lenguaje interpretado y uno compilado. PHP es ejemplo de un lenguaje interpretado. La computadora o el navegador lee el programa como un script, de arriba hacia abajo, y lo ejecuta en ese órden: cualquier cosa que declares al final no puede ser referenciado al principio. Pero en un lenguaje compilado (todo) el programa es compilado en un archivo ejecutable. Entonces no es necesario leer el programa desde el principio al final para ejecutar los comandos. Es mucho más rápido de esta manera.

Así que este ingeniero está convirtiendo el sitio de uno que funciona con un lenguaje interpretado a uno que funciona con un lenguaje compilado. ...”

- ¿Y cuál será el efecto de ejecutar el sitio en Hyper PHP?

“Vamos a reducir el uso del CPU en nuestros servidores en un 80%, así que, prácticamente, los usuarios simplemente verán que el sitio es más rápido. Las páginas cargarán en un quinto del tiempo que lo hacían”.

- ¿Cuándo saldrá esto?

“Cuando esté listo. En los próximos meses, idealmente”.

Supongo que en este momento creer lo anterior es sólo una cuestión de fé. Pero considerando que Facebook es uno de los usuarios más grandes de PHP del mundo y que ya tiene más de 350 Millones de usuarios la idea de un "HPHP" no parece tan descabellada.


Error en Ubuntu 9.10 afecta a PEAR

En el blog de PEAR (PHP Extensión and Application Repository) se reporta que la versión inicial de Ubuntu 9.10 "Karmic Koala" tiene un error que afecta a PHP y a PEAR, y cuya corrección llegó demasiado tarde como para incluirse en ese lanzamiento. El error sí está corregido y sin duda será incluído en las siguientes actualizaciones de "Karmic Koala".

El error principal afecta a la libería zlib, y se hace evidente al intentar instalar o actualizar un paquete; ya que hacerlo involucra descargar un archivo "tarball" que está comprimido. El error causa que algunas funciones de zlib no estén disponibles para PHP y que el código de Archive_Tar falle sin ninguna notificación

Una solución provisoria es usar el argumento -Z para que se descarge sólo un archivo .tar en lugar de uno .tgz, por ejemplo:

pear install -Z phpdocumentor