我根據(jù)官方的文檔想操作MySQL數(shù)據(jù)庫類,但是出現(xiàn)問題,具體如下:
我基于官方的workerman的版本,里面的Applications自帶Todpole,根據(jù)文檔,我在Todpole/Config里面新建DB.php,然后修改Todpole/Event.php增加了use \GatewayWorker\Lib\Db,代碼邏輯里面我寫這么一段$ret = Db::instance('db')->query("select * from user");
運(yùn)行的時(shí)候報(bào)錯(cuò):
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
我覺得應(yīng)該是我目錄結(jié)構(gòu)不對(duì),但是試了很長時(shí)間沒找出來,所以來求助!
workerman分為主進(jìn)程和子進(jìn)程,主進(jìn)程一般不加載業(yè)務(wù)代碼,所以沒有添加業(yè)務(wù)的autoload邏輯,而是由子進(jìn)程加載業(yè)務(wù)代碼并運(yùn)行
在啟動(dòng)腳本(一般是Applictions/xxx/start.php)中直接運(yùn)行的代碼是屬于主進(jìn)程的
而onXXX回調(diào)是屬于子進(jìn)程的,并在子進(jìn)程中運(yùn)行
你的問題可能是在主進(jìn)程運(yùn)行了 Db::instance('db')->query("select * from user");
可以吧 Db 操作放在onXXX里面運(yùn)行試下