Preámbulo

Workerman, contenedor de aplicaciones PHP de alto rendimiento

¿Qué es Workerman?

Workerman es un contenedor de aplicaciones PHP de alto rendimiento de código abierto, desarrollado en PHP puro.

Workerman no es volver a inventar la rueda; no es un marco MVC, sino un marco de servicio más básico y generalizado. Puedes usarlo para desarrollar proxies TCP, proxies de escalera, servidores de juegos, servidores de correo, servidores FTP e incluso desarrollar una versión en PHP de Redis, una base de datos en PHP, Nginx en PHP, PHP-FPM en PHP, entre otros. Workerman puede considerarse una innovación en el campo de PHP, liberando a los desarrolladores de la restricción de que PHP solo puede hacer WEB.

En realidad, Workerman es similar a una versión en PHP de Nginx, con un núcleo basado en múltiples procesos + Epoll + IO no bloqueante. Cada proceso de Workerman puede mantener miles de conexiones concurrentes. Dado que reside en la memoria, no depende de contenedores como Apache, Nginx o PHP-FPM, y tiene un rendimiento extremadamente alto. Soporta TCP, UDP, UNIXSOCKET, conexiones persistentes, así como protocolos de comunicación como Websocket, HTTP, WSS, HTTPS y varios protocolos personalizados. Cuenta con temporizadores, clientes de socket asíncronos, Redis asíncrono, HTTP asíncrono, colas de mensajes asíncronas y una gran cantidad de componentes de alto rendimiento.

Algunas direcciones de aplicación de Workerman

A diferencia de los marcos MVC tradicionales, Workerman no solo se puede utilizar para el desarrollo web, sino que también tiene un campo de aplicación más amplio, como la mensajería instantánea, el Internet de las cosas, juegos, gobernanza de servicios, otros servidores o middleware. Esto sin duda amplía la perspectiva de los desarrolladores de PHP. Actualmente, existe escasez de desarrolladores de PHP en estas áreas. Si deseas tener una ventaja técnica en el campo de PHP, no te conformas con las tareas diarias de inserción, eliminación y modificación, o deseas desarrollarte hacia un arquitecto o una figura técnica prominente, Workerman es un marco que definitivamente vale la pena aprender. Se sugiere a los desarrolladores que no solo sepan usarlo, sino que también puedan desarrollar su propio proyecto de código abierto basado en Workerman, mejorando sus habilidades y aumentando su influencia, como el framework de rastreo web Beanbun, que, justo después de lanzarse, recibió numerosos elogios.

Algunas direcciones de aplicación de Workerman son las siguientes:

  1. Mensajería instantánea
    Por ejemplo, chat en línea, envío de mensajes instantáneos, mini programas de WeChat, notificaciones de aplicaciones móviles, notificaciones de software de PC, etc.
    [Ejemplo workerman-chat, envío de mensajes web, chat de renacuajos]

  2. Internet de las cosas
    Por ejemplo, comunicación de Workerman con impresoras, con microcontroladores, pulseras inteligentes, hogares inteligentes, bicicletas compartidas, etc.
    [Casos de clientes como 易联云, 易泊时代, etc.]

  3. Servidores de juegos
    Por ejemplo, juegos de mesa, MMORPG, etc. [Ejemplo browserquest-php]

  4. Servicios HTTP
    Por ejemplo, escribir interfaces HTTP de alto rendimiento, sitios web de alto rendimiento. Si deseas realizar servicios o sitios relacionados con HTTP, se recomienda encarecidamente webman

  5. Servicios SOA
    Utilizando Workerman, encapsula las diferentes unidades funcionales de los negocios existentes para proporcionar una interfaz unificada al exterior, logrando un sistema desacoplado, fácil de mantener, altamente disponible y escalable. [Ejemplo workerman-json-rpc, workerman-thrift]

  6. Otro software de servidor
    Por ejemplo, GatewayWorker, PHPSocket.IO, proxy HTTP, proxy sock5, componente de comunicación distribuida, componente de compartición de variables distribuido, cola de mensajes, servidor DNS, servidor web, servidor CDN, servidor FTP, etc.

  7. Componentes
    Por ejemplo, Redis asíncrono, cliente HTTP asíncrono, cliente MQTT del Internet de las cosas workerman-mqtt, cola de mensajes workerman/redis-queue, workerman/stomp, workerman/rabbitmq, componente de monitoreo de archivos, y muchos otros componentes de terceros, etc.

Es evidente que los marcos MVC tradicionales tienen dificultades para implementar las funcionalidades mencionadas anteriormente, por lo que nació Workerman.

Filosofía de Workerman

Simplicidad extrema, estabilidad, alto rendimiento y distribución.

Simplicidad extrema

La simplicidad es belleza. El núcleo de Workerman es extremadamente simple, consta de solo unos pocos archivos PHP y expone solo unas pocas interfaces, lo que lo hace muy fácil de aprender. Todas las demás funciones se amplían a través de componentes.

Workerman cuenta con documentación completa, una página principal autorizada, una comunidad activa, varios grupos de QQ con miles de personas y numerosos componentes de alto rendimiento, además de muchos ejemplos; todo esto facilita el uso del framework para los desarrolladores.

Estabilidad

Workerman ha estado en código abierto durante varios años y ha sido utilizado a gran escala por muchas empresas que cotizan en bolsa; es extremadamente estable. Algunos servicios no se han reiniciado en más de dos años y aún funcionan rápidamente. No hay coredumps, ni fugas de memoria, ni errores.

Alto rendimiento

Debido a que Workerman reside en la memoria y no depende de apache/nginx/php-fpm, no tiene sobrecargas de comunicación entre contenedores a PHP, ni la sobrecarga de inicializar y destruir todo en cada solicitud, ofreciendo un rendimiento excepcionalmente alto. Comparado con los marcos MVC tradicionales, su rendimiento es varias decenas de veces más alto, y en PHP7, a través de pruebas de estrés ab, su QPS incluso supera al de Nginx por separado.

Distribuida

Hoy en día, ya no vivimos en una época de "luchador solitario". Por muy potente que sea un solo servidor, siempre hay un límite; la implementación distribuida en múltiples servidores es clave. Workerman proporciona directamente una solución de comunicación distribuida de conexiones largas framework GatewayWorker; solo necesitas una configuración simple para agregar servidores y luego iniciarlos, con código de negocio sin cambios y capacidad del sistema multiplicada. Si estás desarrollando aplicaciones de conexiones TCP de larga duración, se recomienda usar GatewayWorker, que es un envoltorio de Workerman diseñado para aplicaciones de conexiones largas y ofrece interfaces más ricas y una potente capacidad de procesamiento distribuido.

Alcance de este manual

Versiones Workerman 3.x - 5.x

Usuarios de Windows (lectura obligatoria)

Workerman es compatible tanto con sistemas Linux como con Windows. La versión de Windows de Workerman no depende de ninguna extensión, solo necesita que la variable de entorno de PHP esté configurada. Puedes consultar la instalación de la versión de Windows y las cosas a tener en cuenta en lectura obligatoria para usuarios de Windows.

Cliente

El protocolo de comunicación de Workerman es abierto y personalizable, por lo que, en teoría, Workerman puede comunicarse con clientes en cualquier plataforma que utilice cualquier protocolo. Cuando los usuarios desarrollan clientes, pueden completar la comunicación con el servidor según el protocolo de comunicación correspondiente.