国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問下workman是否支持端口復用?

a392223903

例如我啟動多個workman,使用相同的端口。linux3.10以上內(nèi)核已經(jīng)支持端口復用,swoole雖然可以,但是我想用workman來做。另外看到php socket文檔也有個端口復用的設置函數(shù),但是為什么我啟動多個workman不可以相同端口呢?下面是php的端口復用設置

socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)
3954 2 0
2個回答

kenny534

workerman的端口是與協(xié)議綁定的,如果您打算在一個端口上實現(xiàn)不同的協(xié)議,個人覺得,目前不支持。

  • a392223903 2019-11-05

    不是哦 我是相同協(xié)議 多個進程監(jiān)聽

walkor 打賞

workerman 支持端口復用。

以下摘自手冊:http://doc.workerman.net/worker/reuse-port.html

bool Worker::$reusePort

設置當前worker是否開啟監(jiān)聽端口復用(socket的SO_REUSEPORT選項)。
開啟監(jiān)聽端口復用后允許多個無親緣關系的進程監(jiān)聽相同的端口,并且由系統(tǒng)內(nèi)核做負載均衡,決定將socket連接交給哪個進程處理,避免了驚群效應,可以提升多進程短連接應用的性能。

注意: 此特性需要PHP版本>=7.0
注意: 從workerman 3.5.21版本開始默認開啟此選項。之前版本需要手動設置Worker::$reusePort=true;開啟。
范例 1

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';

$worker = new Worker('websocket://0.0.0.0:8484');
$worker->count = 4;
$worker->reusePort = true;
$worker->onMessage = function($connection, $data)
{
    $connection->send('ok');
};
// 運行worker
Worker::runAll();

范例2:workerman多端口(多協(xié)議)監(jiān)聽

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';

$worker = new Worker('text://0.0.0.0:2015');
$worker->count = 4;
// 每個進程啟動后在當前進程新增一個監(jiān)聽
$worker->onWorkerStart = function($worker)
{
    $inner_worker = new Worker('http://0.0.0.0:2016');
    /**
     * 多個進程監(jiān)聽同一個端口(監(jiān)聽套接字不是繼承自父進程)
     * 需要開啟端口復用,不然會報Address already in use錯誤
     */
    $inner_worker->reusePort = true;
    $inner_worker->onMessage = 'on_message';
    // 執(zhí)行監(jiān)聽
    $inner_worker->listen();
};

$worker->onMessage = 'on_message';

function on_message($connection, $data)
{
    $connection->send("hello\n");
}

// 運行worker
Worker::runAll();
年代過于久遠,無法發(fā)表回答
??