Cómo inicializar múltiples Workers en el sistema operativo Windows
En el sistema operativo Windows no es posible inicializar múltiples Workers en un solo archivo php.
Por ejemplo, el siguiente archivo test.php:
<?php
...
$socket_server = new Worker("tcp://0.0.0.0:5555");
$socket_server->on....
$websocket_server = new Worker("websocket://0.0.0.0:6666");
$websocket_server->on....
$webserver = new WebServer("http://0.0.0.0:6666");
$webserver->addRoot(...
...
Al iniciar en Windows, se genera el error:
multi workers init in one php file are not support
Solución
La solución es usar múltiples scripts de inicio, donde cada script inicializa un Worker, o dicho de otra manera, un archivo de inicio por cada puerto.
Supongamos que inicializamos dos instancias de Worker (tcp y websocket) y una instancia de WebServer, entonces necesitamos crear tres archivos de inicio: start_socket_server.php, start_websocket_server.php y start_webserver.php.
Por ejemplo:
Archivo start_socket_server.php:
...
$socket_server = new Worker("tcp://0.0.0.0:5555");
$socket_server->on....
....
Archivo start_websocket_server.php:
...
$websocket_server = new Worker("websocket://0.0.0.0:6666");
$websocket_server->on....
...
Archivo start_webserver.php:
...
$webserver = new WebServer("http://0.0.0.0:6666");
$webserver->addRoot(...
...
Al iniciar, puedes hacerlo así, ejecutando directamente los tres scripts (en la línea de comandos de windows cmd):
php start_socket_server.php start_websocket_server.php start_webserver.php