workerman使用mysql类的目录问题

jafewff

我根据官方的文档想操作MySQL数据库类,但是出现问题,具体如下:
我基于官方的workerman的版本,里面的Applications自带Todpole,根据文档,我在Todpole/Config里面新建DB.php,然后修改Todpole/Event.php增加了use \GatewayWorker\Lib\Db,代码逻辑里面我写这么一段$ret = Db::instance('db')->query("select * from user");

运行的时候报错:

PHP Fatal error:  Class 'Config\Db' not found in /var/www/html/workerman/GatewayWorker/Lib/Db.php on line 22

Fatal error: Class 'Config\Db' not found in /var/www/html/workerman/GatewayWorker/Lib/Db.php on line 22
WORKER EXIT UNEXPECTED E_ERROR Class 'Config\Db' not found in /var/www/html/workerman/GatewayWorker/Lib/Db.php on line 22
worker exit with status 65280

我觉得应该是我目录结构不对,但是试了很长时间没找出来,所以来求助!

6223 1 0
1个回答

walkor

workerman分为主进程和子进程,主进程一般不加载业务代码,所以没有添加业务的autoload逻辑,而是由子进程加载业务代码并运行

在启动脚本(一般是Applictions/xxx/start.php)中直接运行的代码是属于主进程的

而onXXX回调是属于子进程的,并在子进程中运行

你的问题可能是在主进程运行了 Db::instance('db')->query("select * from user");

可以吧 Db 操作放在onXXX里面运行试下

  • jafewff 2015-04-13

    是我自己粗心了,Config下面应该是Db.php,我取名为DB.php了,感谢你的回答!

年代过于久远,无法发表回答
🔝