您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman端口复用reusePort属性
发布时间:2021-11-29 22:52:55编辑:雪饮阅读()
要求(
workerman >= 3.2.1
并且
PHP>=7.0
)
这两个要求,我都满足,我这里是
workerman4
系列,
php7.3.4
设置当前worker是否开启监听端口复用(socket的SO_REUSEPORT选项)。
开启监听端口复用后允许多个无亲缘关系的进程监听相同的端口,并且由系统内核做负载均衡,决定将socket连接交给哪个进程处理,避免了惊群效应,可以提升多进程短连接应用的性能。
这句话感觉官方可能是写错了,因为你看看接下来的例子:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->count = 4;
$worker->reusePort = true;
$worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('ok');
};
// 运行worker
Worker::runAll();
他这里是websocket协议,websocket协议可是长连接呢。
虽然服务端能正常运行:
[root@localhost workerman]# php -c /usr/local/php734/lib/php/php.ini start.php start
Workerman[start.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.22 PHP version:7.3.4
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root none websocket://0.0.0.0:8484 4 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
客户端也算是正常:
关键字词:workerman,端口复用,reusePort