swoole php配置文件,EasySwoole分离配置文件

EasySwoole分离配置文件

羡仙. • 2019 年 05 月 08 日

框架安装完成后系统默认的全局配置文件是项目根目录下的 produce.php,dev.php 文件,(在3.1.2版本之前是dev.env,produce.env). 当使用php easyswoole start命令启动时,默认为开发模式,加载 dev.php 运行 php easyswoole start produce 命令时,为生产模式,加载 produce.php.我们可以直接将配置的文件写入到dev.env,produce.env目录下.

但是我也不知道为什么我就想把它抽离出来.就当是为了方便管理吧,忘了声明.如果用Yaconf做配置文件的话就可以看着玩玩.因为分离配置的这个文档tmd怎么说呢...

5cd68d2736567526fd3b770b0df8f49e.png

在项目的根目录下创建Config目录用于放配置文件.然后注意了如果你的版本是3.0的就别去看文档了.写的个球啊

4d3d990ce1371f4db70a52c998b80784.png转去2.0版本的文档看看去.注意下面是图,不是代码哈

6b5b6c1bef88fa708729e3b94a13b3f9.png

从图可以看出来2.0的分离配置文件很简单嘛~照着官方文档复制粘贴就能搞定的嘛

860e5eb29fd9bea808ba63237c6a2868.gif

先写好配置文件Config/RedisConfig.php<?php

return [

'REDISCONF' => [

'host' => '127.0.0.1',

'port' => 6379,

'time_out' => 3

]

];

在EasySwooleEvent.php中的initialize方法添加// 载入项目 Conf 文件夹中所有的配置文件 . 我们根目录下刚创建的Config目录

self::loadConf(EASYSWOOLE_ROOT . '/Config');

然后创建loadConf方法public static function loadConf($ConfPath)

{

$Conf = Config::getInstance();

//注意这个file需要引入的 这里的scandirectory与2.x的sacnDir一样注意修改

$files = File::scanDirectory($ConfPath);

var_dump($files);

//获取所有Config下所有的文件*/

foreach ($files as $file) {

$data = require_once $file;

$Conf->setConf(strtolower(basename($file,'.php')),(array)$data);

}

}

然后运行发现报错.可以看到参数不对。多了一个纬度的数组 我们只要files

e1d0a198d5df1f163dca5156ee619989.png

修改loadConf方法public static function loadConf($ConfPath)

{

$Conf = Config::getInstance();

//注意这个file需要引入的 这里的scandirectory与2.x的sacnDir一样注意修改

$files = File::scanDirectory($ConfPath);

//可以看到参数不对。多了一个纬度的数组 我们只要files

var_dump($files['files']);

//获取所有Config下所有的文件*/

foreach ($files['files'] as $file) {

$data = require_once $file;

$Conf->setConf(strtolower(basename($file,'.php')),(array)$data);

}

}

重启测试

5837924496544e47789f0a243164b36e.png

修改成功。成功引入了Config目录下的所有配置文件.但是获取不到配置的数据

d47d415272f2877580db4564499d3ef3.gif

遇到问题绝不能认为是自己错了!因为我只是复制粘贴代码的搬运工!

0c9f2f558fc317974cc97a8845bc0080.gif

查看源码vendor\easyswoole\easyswoole\src\Config.php/**

* 设置配置项

* 在server启动以后,无法动态的去添加,修改配置信息(进程数据独立)

* @param string $keyPath 配置项名称 支持点语法

* @param mixed $data 配置项数据

*/

public function setConf($keyPath, $data): void

{

$this->conf->set($keyPath, $data);

}

他的注释说的很明白!那我们就换一个方法吧.

695f0208b53a0287638179b0db7d0073.png

可以看到源码中有loadFile这个方法/**

* 载入一个文件的配置项

* @param string $filePath 配置文件路径

* @param bool $merge 是否将内容合并入主配置

* @author : evalor

*/

public function loadFile($filePath, $merge = false)

{

if (is_file($filePath)) {

$confData = require_once $filePath;

if (is_array($confData) && !empty($confData)) {

$basename = strtolower(basename($filePath, '.php'));

if (!$merge) {

$this->conf[$basename] = $confData;

} else {

$this->conf = new SplArray(array_merge($this->toArray(), $confData));

}

}

}

}

就先拿他测试一下吧.更改我们EasySwooleEvent.php下的loadConf方法public static function loadConf($ConfPath)

{

$Conf = Config::getInstance();

//注意这个file需要引入的 这里的scandirectory与2.x的sacnDir一样注意修改

$files = File::scanDirectory($ConfPath);

//可以看到参数不对。多了一个纬度的数组 我们只要files

//获取所有Config下所有的文件*/

foreach ($files['files'] as $file) {

//true合并到祝配置中,flase name=>data

$Conf->loadFile($file, 'true');

}

}

获取配置文件$db = Config::getInstance()->getConfig('REDISCONF');

return $this->writeJson(0,'ok',$db);

获取成功!管tmd是啥.能获取到配置的方法就是好方法!

f3686951451232dba1a8245f54ca058f.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值