Cómo habilitar el módulo Swoole para PHP en ServBay
ServBay es un potente entorno local de desarrollo web que integra numerosas herramientas y extensiones necesarias para desarrolladores, entre ellas la popular y de alto rendimiento extensión Swoole para PHP. Swoole es un motor de red asíncrono, concurrente y de alto rendimiento diseñado para PHP, que puede mejorar notablemente el rendimiento y la escalabilidad de tus aplicaciones PHP. En este artículo te mostramos paso a paso cómo habilitar Swoole en ServBay, para que puedas aprovechar al máximo sus potentes características y crear aplicaciones y servicios PHP más eficientes.
Sobre el framework Swoole
Swoole es un proyecto de código abierto que dota a PHP de características avanzadas similares a Node.js, como I/O asíncrono, corrutinas y multiprocesos. Con Swoole, los desarrolladores PHP pueden liberarse de las restricciones del modelo web tradicional basado en servidores como Apache/Nginx + PHP-FPM, para construir servicios residentes en memoria de alto rendimiento, tales como:
- Pasarelas API de alto rendimiento
- Aplicaciones de comunicación en tiempo real (WebSocket)
- Servidores de juegos
- Aplicaciones de Internet de las Cosas (IoT)
- Servicios y procesamiento de tareas en backend
Principales características de Swoole
- Alto rendimiento: Implementa I/O asíncrono y no bloqueante basado en llamadas al sistema como epoll/kqueue, junto con soporte para multihilos, multiprocesos y corrutinas, logrando gran capacidad de procesamiento y baja latencia.
- Asincronía y corrutinas: Proporciona capacidad de corrutinas, permitiendo escribir código asíncrono con sintaxis similar a la programación síncrona, lo que mejora enormemente la eficiencia del desarrollo.
- Componentes integrados: Incluye servidores y clientes HTTP, WebSocket, TCP, UDP, así como pool de conexiones, temporizadores, gestión de procesos y mucho más.
- Fácil integración: Compatible con los principales frameworks PHP (como Laravel, Symfony, ThinkPHP, etc.), y también apto para crear aplicaciones nativas con Swoole desde cero.
Soporte de Swoole en ServBay
ServBay incluye de forma preinstalada la extensión Swoole correspondiente para cada versión de PHP compatible, lo que evita tener que descargar o compilarla manualmente. ServBay se encarga de gestionar la versión de Swoole adecuada para cada versión de PHP que utilices.
Actualmente, puedes habilitar Swoole en ServBay para las siguientes versiones de PHP:
- PHP 5.6
- Serie PHP 7.x
- Serie PHP 8.x (incluyendo PHP 8.5)
ServBay selecciona y provee automáticamente el archivo de extensión Swoole adecuado según el PHP que elijas.
Requisitos previos
Antes de activar el módulo Swoole, asegúrate de que:
- Has instalado y ejecutado correctamente ServBay.
- Has instalado y seleccionado en ServBay la versión de PHP donde deseas usar Swoole.
Cómo habilitar el módulo Swoole
ServBay ofrece dos métodos para activar Swoole: a través de su interfaz gráfica (GUI) o editando manualmente el archivo de configuración. Se recomienda la interfaz gráfica por su simplicidad y facilidad de uso.
Habilitar Swoole desde la GUI de ServBay (recomendado)
Este método es el más sencillo y rápido:
- Abre la interfaz gráfica de ServBay.
- En la barra de navegación lateral, selecciona Lenguajes (Languages).
- Haz clic en PHP.
- En la lista de versiones PHP a la derecha, localiza la versión en la que deseas activar Swoole (por ejemplo:
PHP 8.3
), y asegúrate de que esté seleccionada (el círculo aparece en verde). - Haz clic en el botón Extensiones (Extensions) a la derecha de esa versión de PHP.
- En el listado emergente de extensiones, localiza swoole.
- Activa el interruptor a la izquierda de swoole (debe ponerse en verde).
- Haz clic en Guardar (Save) o Aplicar (Apply) en la parte inferior de la ventana.
- ServBay te pedirá reiniciar el servicio PHP para aplicar los cambios. Haz clic en Reiniciar (Restart).
Una vez que el servicio reinicie, el módulo Swoole quedará activo.
Edición manual del archivo de configuración (avanzado)
Si necesitas configuraciones avanzadas o prefieres editar a mano, puedes habilitar Swoole modificando el archivo ini
de PHP correspondiente.
Ve al directorio
conf.d
de la versión de PHP que utilices. Este directorio aloja los archivos de configuración de extensiones adicionales, y ServBay los carga automáticamente. Por ejemplo, para PHP 8.3 la ruta suele ser:/Applications/ServBay/etc/php/8.3/conf.d/
1Nota: Si instalaste ServBay en otra ubicación, adapta la ruta según corresponda.
Dentro de ese directorio, abre el archivo
swoole.ini
.Por defecto, la línea para habilitar Swoole podría estar comentada (es decir, empezar por
;
). Busca el siguiente contenido:ini[Swoole] ; Uncomment the following line to enable Swoole ;extension = swoole.so
1
2
3Elimina el símbolo
;
para descomentar la líneaextension = swoole.so
:ini[Swoole] ; Uncomment the following line to enable Swoole extension = swoole.so
1
2
3Guarda el archivo
swoole.ini
.En la interfaz principal de la GUI de ServBay o en el panel de gestión de servicios, busca el servicio PHP correspondiente y haz clic en reiniciar.
Cuando el reinicio haya terminado, Swoole se cargará según la configuración.
Verificar que el módulo Swoole está habilitado
La forma más común de comprobar que Swoole está activo es usando la función phpinfo()
para revisar los módulos que PHP tiene cargados.
- Dentro del directorio raíz de algún sitio gestionado por ServBay (por ejemplo:
/Applications/ServBay/www/servbay.demo/public/
), crea un archivo llamadophpinfo.php
. - Edita
phpinfo.php
y añade el siguiente código:php<?php phpinfo(); ?>
1
2
3 - Asegúrate de que el sitio
servbay.demo
en ServBay esté configurado y apunte al directorio donde guardastephpinfo.php
. - Accede en tu navegador a la URL correspondiente, por ejemplo
https://servbay.demo/phpinfo.php
. - En la página
phpinfo
, desplázate hacia abajo o utiliza la búsqueda del navegador (Ctrl+F o Cmd+F) y busca el término "swoole".
Si ves información sobre Swoole (número de versión, opciones de configuración, etc.), significa que el módulo Swoole se ha cargado y está funcionando correctamente.
Ilustración: buscar información de Swoole en la página phpinfo
Ejemplo de uso de Swoole
Una vez habilitado Swoole, puedes empezar a desarrollar aplicaciones sobre este framework. A continuación, un ejemplo básico de cómo crear un servidor HTTP con Swoole.
Ejemplo de código: crear un servidor HTTP básico con Swoole
Crear el directorio del proyecto En tu carpeta de desarrollo (por ejemplo, bajo
/Applications/ServBay/www/
), crea un nuevo directorio de proyecto llamadomy-swoole-app
. Dentro de él, crea un subdirectoriopublic
para el archivo de entrada.bashcd /Applications/ServBay/www/ mkdir my-swoole-app cd my-swoole-app mkdir public
1
2
3
4Crear el archivo de entrada del servidor
public/index.php
php<?php require __DIR__ . '/../vendor/autoload.php'; // Si usaste Composer para instalar otras dependencias use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response; // Crear instancia del servidor HTTP, escuchando en todas las IPs locales (0.0.0.0), puerto 9501 $server = new Server("0.0.0.0", 9501); // Configurar opciones del servidor (opcional) // $server->set([ // 'worker_num' => 4, // Número de procesos de trabajo // 'daemonize' => false, // Si ejecuta como demonio // ]); // Escuchar evento de solicitud $server->on("request", function (Request $request, Response $response) { // Establecer encabezados de respuesta $response->header("Content-Type", "text/plain"); // Establecer cuerpo de la respuesta $response->end("Hello ServBay with Swoole!"); }); // Escuchar evento de arranque del servidor (opcional) $server->on("start", function (Server $server) { echo "Swoole http server is started at http://0.0.0.0:9501\n"; }); // Iniciar servidor $server->start(); echo "Swoole server stopped.\n"; // Esta línea solo se ejecuta al detenerse el servidor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35Nota: la línea
require __DIR__ . '/../vendor/autoload.php';
solo es necesaria si utilizas Composer para instalar otras bibliotecas relacionadas con Swoole (por ejemploswoole/ide-helper
o frameworks Swoole). Para código nativo básico de Swoole, generalmente puedes omitir esa línea.Ejecutar el servidor desde línea de comandos Abre la terminal integrada de ServBay o la terminal del sistema y navega a tu directorio del proyecto (
/Applications/ServBay/www/my-swoole-app/
). Asegúrate de que la terminal está usando la versión de PHP administrada por ServBay (puedes verificarlo conwhich php
o usando la terminal propia de ServBay).Inicia el servidor Swoole con:
shphp public/index.php
1Si todo va bien, verás algo como "Swoole http server is started at http://0.0.0.0:9501" en tu terminal.
Ilustración: ejecutando el servidor Swoole en la terminal
Probar el acceso Una vez iniciado el servidor, accede en tu navegador a
http://localhost:9501
. Deberás ver la respuesta "Hello ServBay with Swoole!".Para detener el servidor Swoole, pulsa
Ctrl + C
en la terminal.
Consideraciones
- Modo de ejecución: El ejemplo anterior muestra cómo ejecutar el servidor Swoole directamente desde la consola, ideal para servicios residentes en memoria. Para aplicaciones web tradicionales (Laravel/Symfony/WordPress, etc.), normalmente se usa PHP-FPM tras un proxy como Caddy o Nginx. Si quieres ejecutar estos frameworks bajo Swoole (por ejemplo con Hyperf, Swoole-Laravel, etc.), debes usar los scripts de arranque que proveen dichos frameworks, normalmente creando un proceso independiente similar al ejemplo de Swoole puro.
- Ocupación de puertos: Swoole escucha el puerto que le asignes (en el ejemplo, el 9501). Asegúrate de que ese puerto no esté ocupado por otras aplicaciones.
- Registro de errores: Los errores y salidas de Swoole suele enviarlos a la terminal desde la que se ejecuta, o bien al archivo de logs que hayas configurado.
Preguntas frecuentes (FAQ)
P: He activado Swoole desde la GUI de ServBay, pero no veo información sobre Swoole en la página de phpinfo()
. ¿Qué puedo hacer?
R: Revisa los siguientes puntos:
- Verifica que estés consultando la página
phpinfo()
de la versión de PHP correcta. ServBay puede gestionar múltiples versiones de PHP a la vez; asegúrate de acceder al sitio o ejecutarphpinfo()
usando la versión donde activaste Swoole. - Confirma que guardaste los cambios y reiniciaste el servicio PHP correspondiente en la GUI de ServBay.
- Si editaste manualmente el archivo
swoole.ini
, comprueba la ruta, el nombre del archivo y que la líneaextension = swoole.so
no esté comentada.
P: ¿Por qué al ejecutar el ejemplo veo el error Class 'Swoole\Http\Server' not found
?
R: Significa que la extensión Swoole no está cargada en la instancia actual de PHP. Repasa los pasos previos para asegurarte de que Swoole está habilitado, y de que desde la terminal ejecutas el comando php public/index.php
con la versión de PHP administrada por ServBay y con Swoole activo. Puedes comprobar rápidamente si Swoole está cargado ejecutando en la terminal: php -m | grep swoole
.
Resumen
Con ServBay, habilitar la extensión Swoole para PHP es un proceso sencillo: ya sea a través de la GUI o editando los archivos de configuración, puedes agregar Swoole de forma rápida a la versión de PHP que prefieras. Así, abrirás la puerta al desarrollo de aplicaciones web modernas de alto rendimiento y programación asíncrona en PHP. Gracias a la potencia de Swoole, podrás construir servicios PHP más veloces y concurrentes, aprovechando todo el potencial de PHP en el desarrollo web actual. ServBay simplifica la gestión del entorno de desarrollo para que puedas centrarte en el código, y no en la configuración del entorno.