How to Initialize Multiple Workers on Windows Operating System

It is not possible to initialize multiple Workers within a single PHP file on the Windows operating system.

For example, in the following 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(...
...

Starting it on Windows will result in the error:

multi workers init in one php file are not support

Solution

The solution is to use multiple startup scripts, each script initializes one Worker, or in other words, one startup file per port.

Assuming we want to initialize two Worker instances (tcp and websocket) and one WebServer instance, we need to create three startup files: start_socket_server.php, start_websocket_server.php, and start_webserver.php.

For example:

File start_socket_server.php

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

File start_websocket_server.php

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

File start_webserver.php

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

When starting, you can do it like this, directly starting the three scripts (run in Windows cmd command line):

   php start_socket_server.php start_websocket_server.php start_webserver.php