Swoole中swoole_server
的属性可通过set(array $configs)
方法进行配置
//构建服务器对象
$host = "0.0.0.0";
$port = 9000;
$server = new swoole_server($host, $port);
//设置服务器对象运行时参数
$configs = [];
$configs["worker_num"] = 8;
$configs["max_request"] = 10000;
$configs["max_conn"] = 10000;
$configs["dispatch_mode"] = 8;
$configs["debug_mode"] = 1;
$configs["daemonize"] = false;
$server->set($configs);
setting
服务器运行时参数列表
$setting = $server->setting;
master_pid
- 当前服务器Master主进程的PID,通过向Master主进程发送SIGTERM信号可安全关闭服务器。
-
master_pid
只能在onStart
、onWorkerStart
回调函数会之后获取到
$server->on("Start", function(swoole_server $server){
$master_pid = $server->master_pid;
$manager_pid = $server->manager_pid;
echo "[start] master {$master_id} manager {$manager_pid}".PHP_EOL;
});
manager_pid
- 当前服务器Manager管理进程的PID,通过向管理进程发送SIGUSR1信号可实现柔性重启。
-
manager_pid
只能在onStart
、onWorkerStart
回调函数会之后获取到
$server->on("Start", function(swoole_server $server){
$master_pid = $server->master_pid;
$manager_pid = $server->manager_pid;
echo "[start] master {$master_id} manager {$manager_pid}".PHP_EOL;
});
worker_id
int $server->worker_id;
- 当前服务器Worker进程的编号,包括Task进程。
- Worker进程编号的取值范围是从0到
$server->setting["worker_num"] - 1
- Task进程编号的取值范围是从
$server->setting["worker_num"]
到$server->setting["worker_num"] + $server["task_worker_num"]
- 当Worker工作进程重启后
worker_id
的值是不变的
$worker_id = $server->worker_id;
worker_pid
int Server::$worker_pid
- 当前服务器Worker进程的PID
$worker_pid = $server->worker_pid;
- 也可通过
posix_getpid()
函数调用返回
taskworker
bool Server::$taskworker
- 工作进程类型:
true
表示Task进程,false
表示Worker进程。
$taskworker = $server->taskworker;
connections
- 适用于Swoole1.7.16+版本
- TCP连接迭代器
- 包含当前所有连接,是一个迭代器对象,迭代器对象只能使用foreach遍历,不能直接var_dump或数组下标访问。遍历的元素是单个连接的文件描述符
fd
。
$connections = $server->connections;
if(count($connections) > 0){
foreach($connections as $fd){
$server->send($fd, "hello");
}
}
ports
监听的所有端口
$ports = $server->ports;