swoole_framework框架填坑

由于业务需求,采用了韩天峰老师的swoole_framework框架进行业务编写,在测试过程中遇到部分疑难杂症,再此记录


一、开启多个worker_num后,redis读写问题

问题描述:开启多个worker_num,redis读数据时失败,或读出:0*0 之类的数据。
解决过程:
  1. 首先明确了,开启多个worker_num后,这个bug几乎是必现的,特别是在set redis的时候,会返回false。多次调试没有结果,猜测是并发调用redis导致的异常,(在php代码中,get数据的时候是:0 但是在redis客户端查看数据的时候却是好的)。
  2. 由于是做同步ppt笔记、鼠标演示的项目,里面有比较频繁的读写redis的地方,却只在翻页的时候(给各个房间中的成员发送翻页消息,各个成员重新进入页面房间时,发生问题。)出现,而且只有master(演示者)出现。查看log发现log记录:log->master is not found.,猜测是否是因为这一段报错,导致程序发生了某些不可预知的bug,于是决定找到报错的原因。
  3. 发现是因为config类没有获取到log这个config导致错误信息无法记录二抛出的错误。去github上查看韩天峰老师的项目代码,发现config中并没有配置log.php这个文件,而是在server.php的构造函数中声明了log类。(错误路径: vendor/matyhtf/swoole_framework/libs/factory/log.php)
解决方法:在configs 目录中加入log.php
<?php
$log['master'] = array(
    'type' => 'FileLog',
    'file' => ROOT_PATH . '/log/swoole.log'
);
return $log;

猜你喜欢

转载自blog.csdn.net/qq_31343581/article/details/80372041