¿Es mejor Node que PHP? ¿Qué pasa si necesito un backend asíncrono? Hasta ahora para desarrollar un backend asíncrono, como por ejemplo un chat, no tenias muchas otras opciones que utilizar frameworks como NodeJS, pero ahora tenemos a un gran competidor, se llama Swoole.

¿Evalúas el rendimiento a la hora de escoger framework? Parece que tenemos un nuevo “mejor framework” en el mundo del desarrollo. Hoy trataré de explicarte qué beneficios puede aportar un Framework PHP como Swoole.

¿Qué es Swoole?

Swoole es un Framework open-source desarrollado en PHP, escrito en C, y disponible como una extensión pecl PHP a partir de la versión PHP >= 5.3.10 y su principal característica es el rendimiento y las conexiones asíncronas.

¿Swoole es asíncrono? ¿Es el Node del PHP?

Bueno, déjame copiar y pegar la definición directamente de la documentación:

“Enable PHP developers to write high-performance, scalable, concurrent TCP, UDP, Unix socket, HTTP, Websocket services in PHP programming language without too much knowledge about non-blocking I/O programming and low-level Linux kernel.”

Tal como definen oficialmente, es un motor de comunicación de red de alto rendimiento para solicitudes asíncronas y paralelas en PHP. Utiliza lenguaje C que proporciona el servidor de subprocesos múltiples asíncronos de PHP, el cliente de red TCP/UDP asíncrono y MySQL asíncrono. Además, está preparado para conexiones HTTP / Websocket / HTTP2 Client / Server Side API. En este post encontrarás las diferencias API REST vs WebSocket.

Suena prometedor, ¿verdad? ¿Servidor HTTP PHP con PHP? ¿Websockets en PHP? ¿Muchas otras posibilidades? Y todo esto con un alto rendimiento. Veamos…

La gente de TechEmpower, el pasado  2018-10-30 realizó unas pruebas para medir el rendimiento de varios frameworks web, independientemente del lenguaje de programación. Veamos, los resultados saltan a la vista:

Benchmark TechEmpower: Rendimiento frameworks web

Ventajas

Examinemos sus ventajas:

  • Es Open Source: https://github.com/swoole/swoole-src
  • Compilado en C, con un rendimiento extremadamente alto.
  • Simple y fácil de usar si ya conoces PHP.
  • Permite conexiones asíncronas, controlada por eventos.
  • Alto rendimiento, escalable, con soporte de millones de conexiones TCP concurrentes.
  • Compatibilidad con multiprocesos / multihilo.
  • Soporta redes IPv4 / IPv6.
  • Conexiones mediante protocolos TCP / UDP / UnixSock.
  • Servidor HTTP / HTTPS SSL / TLS.
  • Servidor websocket.
  • Sistema de archivos.
  • Soporta MySQL y Redis

Servidor HTTP utilizando Swoole

Como hemos comentado, Swoole nos permite ejecutar un servidor HTTP que funciona de forma asíncrona. Aquí te dejo un simple ejemplo que permite un acceso asíncrono al sistema de archivos para responder con el archivo index.html a cada solicitud web.

Como verás, se parece a Node. Primero, creamos el objeto swoole_http_server para crear un servidor HTTP. Luego, creamos dos funciones para dos eventos: una para el inicio, que se ejecutará cuando se inicie el servidor, y otra para la solicitud, que se ejecutará para cada solicitud web. En el evento de solicitud, el sistema de archivos asíncrono se utiliza para cargar los datos de un archivo. Una vez que los datos están disponibles, se activa la respuesta de la llamada con el contenido cargado. En definitiva, envía el index.html al navegador que realiza la solicitud.

¿Fácil verdad? ¡Y funciona! Pero, ¿qué pasa con el rendimiento?

Performance, prueba de rendimiento HTTP

Para probar el rendimiento del servidor HTTP utilizando Swoole, la gente de The Software House Blog ha realizado unas pruebas para evaluar el rendimiento. Para ello, han creado una aplicación en Node y otra en un servidor NGINX, que hace exactamente lo mismo que en Swoole, sirve el fichero index.html.

Con la herramienta wrk para testear el rendimiento mediante fuerza bruta.Los resultados son asombrosos.

Resultado del testeo: Swoole vs Nginx vs Node. Swoole es asombroso.

¡Impresionante! La capacidad de rendimiento de Swoole es prácticamente 3 veces más que Nginx y casi 9 veces más que Node.

Conclusión

El rendimiento de Swoole con sus características destacables, como la capacidad de crear un servidor asíncrono, hace que tengamos un nuevo “mejor framework” en el mundo del desarrollo web. Pero ojo, Swoole no es el único framework PHP asíncrono, también hay otros como ReactPHP. En otro artículo evaluaremos la evolución de los frameworks PHP asíncronos.

Recuerda que aunque Swoole sea sorprendente, no todos los frameworks deben ser utilizados en todos los tipos de proyectos, debes evaluar bien sus implicaciones en todo el ciclo de desarrollo y saber decidir si vale realmente la pena invertir en Swoole como framework de desarrollo y de servidor.

¿Qué framework estás utilizando en tu organización? ¿Estás preparado para desarrollar con Swoole? Si tienes dudas sobre Swoole, escríbenos y te ayudamos a desarrollar tus proyectos.


Photo by chuttersnap on Unsplash

Referencias: