Wie man mehrere Worker unter dem Windows-Betriebssystem initialisiert
Unter dem Windows-Betriebssystem ist es nicht möglich, mehrere Worker in einer PHP-Datei zu initialisieren.
Zum Beispiel in der folgenden 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(...
...
Beim Starten unter Windows wird ein Fehler angezeigt:
multi workers init in one php file are not support
Lösung
Die Lösung besteht darin, mehrere Startskripte zu verwenden, wobei jedes Skript eine Instanz eines Workers initialisiert, oder anders gesagt, jede Portnummer hat eine Startdatei.
Angenommen, es sollen zwei Worker-Instanzen (tcp und websocket) und eine WebServer-Instanz initialisiert werden, müssen drei Startdateien erstellt werden: start_socket_server.php, start_websocket_server.php und start_webserver.php.
Zum Beispiel:
Datei start_socket_server.php:
...
$socket_server = new Worker("tcp://0.0.0.0:5555");
$socket_server->on....
....
Datei start_websocket_server.php:
...
$websocket_server = new Worker("websocket://0.0.0.0:6666");
$websocket_server->on....
...
Datei start_webserver.php:
...
$webserver = new WebServer("http://0.0.0.0:6666");
$webserver->addRoot(...
...
Beim Starten kann man die drei Skripte einfach auf diese Weise direkt starten (im Windows CMD-Befehlszeilen ausführen):
php start_socket_server.php start_websocket_server.php start_webserver.php