我根据官方的文档想操作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
我觉得应该是我目录结构不对,但是试了很长时间没找出来,所以来求助!
workerman分为主进程和子进程,主进程一般不加载业务代码,所以没有添加业务的autoload逻辑,而是由子进程加载业务代码并运行
在启动脚本(一般是Applictions/xxx/start.php)中直接运行的代码是属于主进程的
而onXXX回调是属于子进程的,并在子进程中运行
你的问题可能是在主进程运行了 Db::instance('db')->query("select * from user");
可以吧 Db 操作放在onXXX里面运行试下
是我自己粗心了,Config下面应该是Db.php,我取名为DB.php了,感谢你的回答!