PHP y Node.js

A principios de este mes, octubre 2013, tuve el gusto de dar una charla sobre PHP y Node.js, en la PHP Dev Conference Argentina, gracias a una invitación de @miglesias de @workana.


http://www.phpconference.com.ar/


Tengo que escribir post sobre mi experiencia en esta excelente conferencia, donde conocí a gente y temas muy interesantes. Por ejemplo, vino Rasmus Lerdorf, creador del lenguaje PHP. Y mucha gente de Facebook, explicando sus implementaciones internas sobre PHP.


La descripción de mi charla:


http://www.phpconference.com.ar/php-node-js-y-tutti-li-fiocci/


Veremos qué es Node.js para un programador PHP. Programa montado sobre el engine de JavaScript V8 de Google. Ejecución en un loop, con IO asíncronico. Node.js como servidor de consola, y servidor web. JavaScript como “lenguaje manteca”, muy flexible, con mínima ceremonia de programación, similar a PHP en muchos aspectos, y diferente en otros. Ecosistema de paquetes, parecido a lo que tenemos en PHP con Composer, usando NPM, el manejador oficial de paquetes de Node.js. Veremos que en vez de tener muchas funciones, como PHP, Node tiende a tener modulos, que podemos instalar y consumir en cualquier momento.

Donde Node.js comienza a brillar, y diferenciarse de PHP, es en la atención realtime. Veremos soporte de sockets y websockets, y la importancia del asincronismo en IO. Y el precio a pagar: los callbacks, funciones a ejecutar en algún momento futuro.

Pero no queremos perder nuestro querido PHP. Entonces, pasaremos a integrar PHP con Node.js. Primer approach: PHP + browser + Node.js, sin apenas comunicación entre PHP y Node. Luego: cómo llamar a código Node desde PHP. Módulos dnode (asincrónico y sincrónico). Ejemplos (desde un simple chat, hasta aplicación distribuida). Y hacia el final… bueno, espero que alguna sorpresa, e tutti li fiocci!


La presentación está en:


https://github.com/ajlopez/Talks/tree/master/PhpNode


El código PHP en:


https://github.com/ajlopez/PhpSamples/tree/master/PhpNode


para ser visto desde un servidor web (en mi demostración usé un Xampp con Windows 8).


El código Node.js, con varios servidores a lanzar, cada uno escuchando por una puerta distinta:


https://github.com/ajlopez/PhpSamples/tree/master/PhpNode/Node


Hay que instalar Node.js, y entonces, ejecutar “npm install” en ese directorio. Luego, hay que levantar cada servidor. Por ejemplo, para lanzar el servidor que se usa en el ejemplo de canvas distribuido, ejecutar en la línea de comando: “node canvasserver”.


Hay ejemplos en los que el browser se comunica con Node.js sin pasar por PHP. Y hay otros ejemplos en los que PHP llama a Node.js. Usé:


https://github.com/substack/dnode


del lado de Node.js. Como clientes PHP tienen:


https://github.com/bergie/dnode-php
http://bergie.iki.fi/blog/dnode-make_php_and_node-js_talk_to_each_other/
https://github.com/erasys/dnode-php-sync-client


Y hacia el final de la charla, presenté mi proyecto de código abierto, que compila PHP a JavaScript, y permite levantar páginas (sencillas por ahora) de PHP en un Node.js:


https://github.com/ajlopez/PageJs


Vean un ejemplo:



Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 1391, 14005, 15035, 15550. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>