Reaccionando con

Event-driven, non-blocking I/O with PHP.

Reactor Nuclear escrito en PHP

 

Presentación para  @MedellinPHP

2014-02-20

¿Quién soy en el día?

 

Alvaro José Agámez Licha, trabajo como Software Engineer en Craftinc.

Craftinc es una empresa de desarrollo de software donde creamos productos digitales eficaces.  Somos expertos en UX/UI y desarrollo web. Orgullosamente basados en Medellín, Colombia.

¿Quién soy en la noche?


Novio perezoso amoroso.

Programador por pasión, gamer, geek, amante de todo lo relacionado con la tecnología.

Consumidor de tutoriales, tv, comics, manga, anime, cerveza, helado, changelogs y documentos sobre nuevas tecnologías.

Eterno inconforme, siempre pensando en nuevas formas de hacer mejor las cosas y siempre trabajando en alguna idea, así sea reinventando una que otra rueda.

agenda

 

  1. What the HELL is React?.
  2. Instalación.
  3. Ejemplos.
  4. ¿Preguntas?
  5. ¿Benchmarks?

What the HELL is ReactPHP


React es una librería de bajo nivel para la programación orientada a eventos en PHP. En su núcleo es un bucle de eventos, además de que proporciona utilidades de bajo nivel, tales como: abstracción de Streams, resolución asíncrona de dns, cliente/servidor de red, cliente/servidor http, interacción con procesos. Bibliotecas de terceros pueden usar estos componentes para crear clientes/servidores de red asíncronos y mucho más.




¿Por qué ReactPHP?

Event-driven non-blocking I/O in PHP.



¿Event-driven?

Un paradigma de programación donde la ejecución de código es desencadenada por eventos.



¿Non-blocking?

Un programa puede trabajar en otra tarea mientras espera por las operaciones de entrada/salida.

En resumen



¿Qué hace React que necesitemos?



Asincronismo


 



No bloqueante




Eventos




Input / Output




¿Por qué necesitamos React?


  • Procesamiento de colas.

  • Comunicaciones en tiempo real.

  • Transferencias de archivos.

  • Eventos temporizados.




Node JS

instalación - Composer

React se instala a través de Composer, así que lo primero que debemos hacer es instalar Composer si no lo tenemos instalado:


Windows

d:\php> php -r "readfile('https://getcomposer.org/installer');" | php

OSX via homebrew

$ brew tap josegonzalez/homebrew-php
$ brew install josegonzalez/php/composer

*nix Globalmente

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

instalación - React

Una vez que tenemos instalado Composer, React se instala muy fácilmente.


d:\> composer init --require=react/http:0.3.* -n
d:\> composer install

La lista completa de paquetes que contiene React la pueden encontrar en Packagist.

Ejemplos

Este simple servidor web escrito en React responde con "Hello World" a cada solicitud.


require 'vendor/autoload.php';

$app = function ($request, $response) {
    $response->writeHead(200, array('Content-Type' => 'text/plain'));
    $response->end("Hello World\n");
};

$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http = new React\Http\Server($socket, $loop);

$http->on('request', $app);
echo "Server running at http://127.0.0.1:1337\n";

$socket->listen(1337);
$loop->run();
d:\> composer init --require=react/http:0.3.* -n
d:\> composer install
d:\> php example.php

¿benchmarks?


Gracias a Phil Sturgeon podemos disfrutar de un correcto benchmark midiendo el desempeño de React y Node.js.


Básicamente lo que nos dice este benchmark es que React y Node.js están virtualmente empatados en desempeño, por lo menos para el tipo de operación que se probó.

REACTPHP

By Alvaro Agamez

REACTPHP

Presentación para la comunidad Medellín PHP de la librería ReactPHP

  • 1,061