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 인스턴스 실행(여기서는 하나의 인스턴스만 있음)
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 인스턴스 실행(여기서는 하나의 인스턴스만 있음)
Worker::runAll();