runAll
void Worker::runAll(void)
すべてのWorkerインスタンスを実行します。
注意:
Worker::runAll()を実行すると、永続的にブロックされます。つまり、Worker::runAll()の後にあるコードは実行されません。すべてのWorkerのインスタンス化は、Worker::runAll()の前に行う必要があります。
パラメーター
パラメーターはありません
戻り値
戻り値はありません
サンプル 複数のWorkerインスタンスを実行する
start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello http');
};
$ws_worker = new Worker('websocket://0.0.0.0:4567');
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello websocket');
};
// すべてのWorkerインスタンスを実行
Worker::runAll();
注意:
windows版のworkermanは、同じファイル内で複数のWorkerをインスタンス化することをサポートしていません。
上の例は、windows版のworkermanでは実行できません。
windows版のworkermanでは、複数のWorkerインスタンスの初期化を異なるファイルに置く必要があります。以下のようにします。
start_http.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello http');
};
// すべてのWorkerインスタンスを実行(ここでは1つのインスタンスのみ)
Worker::runAll();
start_websocket.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$ws_worker = new Worker('websocket://0.0.0.0:4567');
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello websocket');
};
// すべてのWorkerインスタンスを実行(ここでは1つのインスタンスのみ)
Worker::runAll();