前提:我用的webman-admin插件的model层来查询的数据,启动webman项目后,我确认所有http的api他们都没正常
问题:webman的gateway连接数据库为null
报错信息如下图:
代码如下,报错在第35行代码处的$user_data = User::where('id', 1)->first();:
<?php
namespace app\index\controller;
use Exception;
use GatewayWorker\Lib\Gateway;
use plugin\admin\app\model\User;
class Events
{
public static function onWorkerStart($businessWorker)
{
// 可以在这里初始化数据库连接或者其他需要在Worker启动时执行的业务逻辑
echo "Worker started\n";
}
public static function onConnect($client_id)
{
// 当客户端连接时触发
echo "New connection: $client_id\n";
}
/**
* @throws Exception
*/
public static function onMessage($client_id, $message)
{
$message = json_decode($message, true);
$type = $message['type'];
if ($type == 'init') {
// 当客户端连接时触发
Gateway::sendToClient($client_id, json_encode(['code' => 10, 'msg' => '连接成功'], true));
}
if ($type == 'send') {
$user_data = User::where('id', 1)->first();
}
}
public static function onClose($client_id)
{
// 当客户端断开连接时触发
echo "Client disconnected: $client_id\n";
}
}
像下面这样子该来连接是可以的,但是这样子和webman自身实例化的数据库连接不一样,会占用资源,请问如何使用webman项目启动后的自带数据库连接呢?
代码如下:
用这个webman的gatewayWorker插件,https://www.workerman.net/plugin/5 然后就可以直接用数据库了