Como inicializar vários Workers em um sistema operacional Windows

No sistema operacional Windows, não é possível inicializar vários Workers em um único arquivo PHP.

Por exemplo, no arquivo test.php a seguir:

<?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(...
...

Ao inicializar no Windows, um erro será gerado:

multi workers init in one php file are not support

Solução

A solução é usar vários scripts de inicialização, onde cada script inicia uma instância de Worker, ou seja, um arquivo de inicialização para cada porta.

Supondo a inicialização de duas instâncias de Worker (tcp e websocket) e uma instância de WebServer, seria necessário criar três arquivos de inicialização: start_socket_server.php, start_websocket_server.php e start_webserver.php.

Por exemplo:

Arquivo start_socket_server.php

...
$socket_server = new Worker("tcp://0.0.0.0:5555");
$socket_server->on....
....

Arquivo start_websocket_server.php

...
$websocket_server = new Worker("websocket://0.0.0.0:6666");
$websocket_server->on....
 ...

Arquivo start_webserver.php

...
$webserver = new WebServer("http://0.0.0.0:6666");
$webserver->addRoot(...
 ...

Durante a inicialização, é possível iniciar os três scripts de forma direta, executando-os no prompt de comando do Windows, da seguinte maneira:

php start_socket_server.php
php start_websocket_server.php
php start_webserver.php