配置文件
EasySwoole 默认通过运行模式选择根目录配置文件:
dev.php
produce.php
配置文件必须返回数组。
刚安装完先只改 dev.php,因为 php easyswoole.php server start 默认以开发模式启动。produce.php 用于 --mode=produce,不要为了调试把两份配置同时改乱。
第一次改配置:换一个端口
打开项目根目录的 dev.php,找到 MAIN_SERVER 下的 PORT,把 9501 改为 9502。仅改这一处即可。保存后在项目根目录完整停止并重新启动服务:
php easyswoole.php server stop
php easyswoole.php server start
在另一个终端验证:
curl -i http://127.0.0.1:9502/hello
预期仍能看到 Hello EasySwoole。修改监听端口属于启动期变更,server reload 不会重新创建主 Server,因此这里必须完整重启。完成实验后可把端口改回 9501,同样需要重启。
默认配置结构
安装器生成的配置大致如下。下面是对照说明,不要将整段代码直接粘贴到已有 dev.php 后面;修改时只编辑现有数组中需要变化的键。
<?php
return [
'SERVER_NAME' => 'EasySwoole',
'MAIN_SERVER' => [
'LISTEN_ADDRESS' => '0.0.0.0',
'PORT' => 9501,
'SERVER_TYPE' => EASYSWOOLE_WEB_SERVER,
'SOCK_TYPE' => SWOOLE_TCP,
'RUN_MODEL' => SWOOLE_PROCESS,
'SETTING' => [
'worker_num' => 8,
'reload_async' => true,
'max_wait_time' => 3,
'enable_deadlock_check' => false,
],
'TASK' => [
'workerNum' => 4,
'maxRunningNum' => 128,
'pushTimeOut' => 15,
'maxPackageSize' => 2 * 1024 * 1024,
],
],
'LOG' => [
'dir' => null,
'handler' => null,
'logLevels' => [],
'displayConsole' => true,
'ignoreCategory' => [],
],
'TEMP_DIR' => null,
];
MAIN_SERVER.SETTING 会传给 Swoole Server。配置项是否可用取决于当前 Swoole 版本。
MAIN_SERVER.PORT 是 HTTP 监听端口;MAIN_SERVER.SETTING.worker_num 是 HTTP Worker 数量;MAIN_SERVER.TASK 配置框架 Task 组件。对于首次运行,先保留安装器默认值,确认服务可访问后再逐项调整。
目录配置与路径常量
dev.php、produce.php 在临时目录初始化之前加载。需要自定义目录时,在现有配置数组中设置绝对路径,例如:
'TEMP_DIR' => EASYSWOOLE_ROOT . '/Temp',
'LOG' => [
'dir' => EASYSWOOLE_ROOT . '/Log',
// 保留原有的其他 LOG 配置项
],
上面是局部示例,不要用它覆盖已有 LOG 数组。在框架初始化完成后的控制器、事件或任务中,可用 EASYSWOOLE_ROOT 定位项目文件,用 EASYSWOOLE_TEMP_DIR 定位临时文件;后者跟随实际 TEMP_DIR 配置,不应把 '/Temp' 写死在业务代码里。EASYSWOOLE_TEMP_DIR 不是 EASYSWOOLE_TMP_DIR。守护模式下避免依赖当前工作目录的原因见开发者必读。
读取和修改
use EasySwoole\EasySwoole\Config;
$port = Config::getInstance()->getConf('MAIN_SERVER.PORT');
$all = Config::getInstance()->getConf();
Config::getInstance()->setConf('APP.name', 'demo');
点语法由配置存储实现支持。运行时修改只影响当前进程内的配置对象,不会自动写回 PHP 配置文件,也不会自动同步到其他 Worker。
合并额外配置
Config::getInstance()->loadFile(EASYSWOOLE_ROOT . '/Config/database.php');
Config::getInstance()->loadDir(EASYSWOOLE_ROOT . '/Config');
Config::getInstance()->loadEnv(EASYSWOOLE_ROOT . '/.env');
loadFile()、loadDir() 和 loadEnv() 默认递归合并;也可以传入 false 覆盖整个配置存储。
建议在 EasySwooleEvent::initialize() 中加载扩展配置,使每个进程在启动阶段得到明确配置。敏感信息不要提交到 Git。