配置文件
在每个Main
所在目录下的config/config.php
配置文件,会在该Main
被实例化时加载。
如果你不知道Main
是什么,请看上一章:《开始一个新项目》
imi 还支持你在项目根目录下,建立一个.env
文件,在里面设置运行环境配置。
配置文件结构
共有结构
<?php
return [
// 加载子配置文件,避免`config.php`过于臃肿不便维护
// 要注意这里的别名不可与configs同级的名字重复,否则会被覆盖
'configs' => [
"别名1" => '配置文件路径1',
"别名2" => '配置文件路径2',
……
],
// bean扫描目录,指定命名空间
'beanScan' => [
'ImiDemo\WebSocketDemo\Listener',
],
];
项目配置文件
return [
// Swoole >= 4.1.0可用,不设置默认为true,开启一键协程化
'enableCoroutine' => true,
// runtime目录设置,默认可不设置,为当前项目下的.runtime目录
// 注意,多个项目不可设置为相同目录!
'runtimePath' => '/tmp/imidemo-runtime/',
// 定义进程名规则
'process' => [
'master' => 'imi:master:{namespace}',
'manager' => 'imi:manager:{namespace}',
'worker' => 'imi:worker-{workerId}:{namespace}',
'taskWorker' => 'imi:taskWorker-{workerId}:{namespace}',
'process' => 'imi:process-{processName}:{namespace}',
'processPool' => 'imi:process-pool-{processPoolName}-{workerId}:{namespace}',
'tool' => 'imi:{toolName}/{toolOperation}:{namespace}',
],
// 主服务器配置
'mainServer' => [
// 指定服务器命名空间
'namespace' => 'ImiDemo\HttpDemo\MainServer',
// 服务器类型,暂时仅支持Type::HTTP
'type' => Type::HTTP,
// 监听的IP地址,可选
'host' => '0.0.0.0',
// 监听的端口
'port' => 8080,
// 参考 swoole mode,可选
'mode' => SWOOLE_BASE,
// 参考 swoole sockType,可选
'sockType' => SWOOLE_SOCK_TCP,
// 服务器配置,参数用法同\Swoole\Server->set($configs)
'configs' => [
'reactor_num' => 8,
'worker_num' => 8,
'task_worker_num' => 16,
],
],
// 子服务器(端口监听)配置
'subServers' => [
// 子服务器别名
'alias1' => [
// 这里同主服务器配置
]
],
];
.env
在 .env
中的配置方式,和Config::set()
写法类似,支持@app
等写法。
如下,是设置连接池的uri例子:
@app.pools.maindb.async.resource = "tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60"
数组的支持:
@app.a.0.id = 1
@app.a.0.name = name1
@app.a.1.id = 2
@app.a.1.name = name2
同:
[
'a' => [
['id'=>1, 'name'=>'name1'],
['id'=>2, 'name'=>'name2'],
]
]