Sobre el proyecto
Swoole es una extensión de PHP que proporciona un runtime de concurrencia basado en eventos, asíncrono y con corrutinas. Está escrita como una extensión en C y se instala mediante PECL o se compila desde el código fuente; requiere Linux, macOS, Cygwin o WSL, PHP 8.2 o posterior, y GCC 4.8 o posterior.
Capacidades principales descritas en el README:
- Corrutinas: la planificación integrada de corrutinas permite escribir código PHP de apariencia síncrona que se ejecuta de forma asíncrona. Las corrutinas se describen como hilos ultraligeros, con miles de ellas creables en un solo proceso.
- Hooks de runtime: Swoole\Runtime::enableCoroutine() reemplaza los punteros de función de flujo de la Zend VM para que las funciones de E/S bloqueantes se vuelvan no bloqueantes y se planifiquen mediante corrutinas. Las integraciones compatibles incluyen ext-curl (con Symfony y Guzzle), ext-redis, ext-mysqli, varios controladores PDO (MySQL, PostgreSQL, SQLite, Oracle, ODBC), funciones de flujo sobre TCP/UDP/UDG/Unix/SSL-TLS y APIs de sistema de archivos, ext-sockets, ext-soap, funciones de sleep, proc_open, gethostbyname, shell_exec, exec, y funciones de archivo como fread/fopen/fsockopen/fwrite/flock.
- Servidores: los servidores HTTP, WebSocket, HTTP/2 y TCP pueden compartir un mismo bucle de eventos; un ejemplo de servidor WebSocket también escucha TCP puro en un segundo puerto. La capa de red usa epoll/kqueue.
- Clientes: se muestran clientes de corrutina para HTTP, WebSocket, HTTP/2 y TCP, con manejo automático de DNS, solicitudes y respuestas.
- Canales: Swoole\Coroutine\Channel proporciona comunicación estilo CSP entre corrutinas, demostrada con un grupo de conexiones Redis y un ejemplo de productor/consumidor.
- Temporizadores: Swoole\Timer::tick, after, clear y exists, además de bucles de suspensión basados en corrutinas.
- Cargas de trabajo mixtas: el README ilustra 10K sleeps, lecturas/escrituras de archivos, consultas PDO/MySQLi e intercambios cliente-servidor TCP/UDP dentro de un solo proceso usando hooks de runtime.
Las opciones de instalación son PECL (pecl install swoole) o compilación desde fuente (phpize, configure, make, make install), con banderas opcionales como --enable-openssl, --enable-sockets, --enable-mysqlnd y --enable-swoole-curl. Los clientes y APIs asíncronos se movieron a una extensión separada llamada swoole_async a partir de la versión 4.3.0. El proyecto está licenciado bajo Apache 2.0 y señala a wiki.swoole.com para documentación, un repositorio de ayuda para IDE, una lista Awesome Swoole, y canales comunitarios en Twitter, Discord y una comunidad en chino.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.