runAll
void Worker::runAll(void)
運(yùn)行所有Worker實(shí)例。
注意:
Worker::runAll()執(zhí)行后將永久阻塞,也就是說位于Worker::runAll()后面的代碼將不會(huì)被執(zhí)行。所有Worker實(shí)例化應(yīng)該都在Worker::runAll()前進(jìn)行。
參數(shù)
無參數(shù)
返回值
無返回
范例 運(yùn)行多個(gè)Worker實(shí)例
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');
};
// 運(yùn)行所有Worker實(shí)例
Worker::runAll();
注意:
windows版本的workerman不支持在同一個(gè)文件中實(shí)例化多個(gè)Worker。
上面的例子無法在windows版本的workerman下運(yùn)行。
windows版本的workerman需要將多個(gè)Worker實(shí)例初始化放在不同的文件中,像下面這樣
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');
};
// 運(yùn)行所有Worker實(shí)例(這里只有一個(gè)實(shí)例)
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');
};
// 運(yùn)行所有Worker實(shí)例(這里只有一個(gè)實(shí)例)
Worker::runAll();