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();