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

請(qǐng)問(wèn)下workman是否支持端口復(fù)用?

a392223903

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

socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)
4117 2 0
2個(gè)回答

kenny534

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

  • a392223903 2019-11-05

    不是哦 我是相同協(xié)議 多個(gè)進(jìn)程監(jiān)聽(tīng)

walkor 打賞

workerman 支持端口復(fù)用。

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

bool Worker::$reusePort

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

注意: 此特性需要PHP版本>=7.0
注意: 從workerman 3.5.21版本開(kāi)始默認(rèn)開(kāi)啟此選項(xiàng)。之前版本需要手動(dòng)設(shè)置Worker::$reusePort=true;開(kāi)啟。
范例 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');
};
// 運(yùn)行worker
Worker::runAll();

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

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

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

$worker->onMessage = 'on_message';

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

// 運(yùn)行worker
Worker::runAll();
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??