No hay duda que el soporte de PHP en Google App Engine (GAE) es el deseo de la mayoría de desarrolladores, yo me incluyo entre ellos. Una prueba es que lidera el wishlist en appengine, seguido por Ruby y Perl. Sin embargo el segundo lenguaje que añadió Google a App Engine fue Java en su versión servlet, sin embargo en un interesante post del blog de la empresa Webdigi me entere de la existencia de un proyecto Open Source llamado Quercus, que es una implementación 100% Java del lenguaje de programación PHP, con lo que es posible ejecutar código PHP en App Engine actualmente.
La principal limitación es que el PHP implementado en Quercus no soporta el Datasote de App Engine, sin embargo debido a que si soporta memcache, es posible utilizar dicha opción para utilizando una base de datos común y corriente (MySQL por ejemplo) hosteada en alguna otra parte de la red, desarrollar aplicaciones que accedan a dicha base de datos. El truco está en utilizar el memcache como buffer de todas las consultas a la base de datos. De dicha manera un pequeño servidor virtual que aloje el MySQL podría atender cientos de miles de visitantes diarios.
He probado el ejemplo que se ofrece en Webdigi, editando el archivos correspondiente y traduciendo los pocos textos de los mismos al español, pueden darle una mirada a la prueba que he realizado en phpgae.appspot.com. Pueden descargar el ejemplo que estoy usando desde este enlace.
Estoy analizando la posibilidad de mover mi blog que utiliza WordPress como CMS a App Engine usando Quercus, según lo que he leído la performance es bastante buena, aunque prefiero probar primero antes de mover este blog a esta nueva ubicación. Como todos sabran actualmente este blog esta hosteado en un servidor virtual en el servicio Mosso de Rackspace como lo describí hace ya más de un mes en el post "En la nube".
Para todos aquellos que deseen probar esta forma de ejecutar código PHP en App Engine aquí los pasos que se deben de seguir:
- Registre una cuenta en Google App Engine (si es que aún no tiene una).
- Descargar e instalar el SDK de Java desde App Engine.
- Descargue el archivo de ejemplo a su computadora.
- Editar el archivo warWEB-INFappengine-web.xml y reemplazar en "<application>phpgae</application>" el nombre de su aplicación en GAE. Recuerde que mi aplicación se llama phpgae.
- Suba su aplicación con los siguientes comandos (en Ubuntu):
cd ~/phpwithjava
~/appengine-java-sdk-1.2.0/bin/appcfg.sh update war
(Asumos que Ud. descomprimió el ejemplo en su directorio home (~/), y realizó lo mismo con el SDK de Java para GAE).
Espero que esta información haya sido de utilidad para todos y espero sus comentarios.