首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使MySQL服务器在WS上消失的Сodeigniter4

使MySQL服务器在WS上消失的Сodeigniter4
EN

Stack Overflow用户
提问于 2022-03-13 12:16:49
回答 1查看 77关注 0票数 0

我在Workerman (websockets项目)上使用了CodeIgniter4最新版本和Websokets。但过了4个小时我有问题了。MySQL离开了错误。代码示例:

代码语言:javascript
复制
<?php

//BASE CLASS FOR ALL MODELS
//namespace App\Models;

//use Exception;

//class CodeIgniterDataBaseModel
//{
//    public $dataBase = null;
//
//    public function __construct(string $nameDataBase)
//    {
//        $this->SetDataBase($nameDataBase);    
//    }


//
//    public function SetDataBase(string $nameDataBase)
//    {
//        $this->dataBase = db_connect($nameDataBase);
//    }

//    public function Query(string $sql, array $array = [])
//    {
//        $result = [];
//        try
//        {
//            $query = $this->dataBase->query($sql, $array);
//        }
//        catch(Exception $e)
//        {
//            $this->Reconnect();
//            $query = $this->dataBase->query($sql, $array);
//        }
//        $this->PrepareQueryResult($query,$result);
//        return $result;
//    }

//    public function IsConnected()
//    {
//        return !empty( $this->dataBase->Query("SELECT VERSION();") );
//    }

//    public function Reconnect()
//    {
//        $this->dataBase->reconnect();
//    }

//    public function Close()
//    {
//        $this->dataBase->close();
//    }   
//};

namespace App\Services\BoostServer;
require_once __DIR__.'/../framework.php';
require_once __DIR__.'/../../Libraries/workerman/Worker.php';
require_once __DIR__.'/../configLoader.php';

use App\Models\SessionModel;
use App\Models\RoomModel;
use Workerman\Worker;
use Exception;

//...
$webSocket = new Worker( "websocket://localhost:9090, $options);


$webSocket->onWorkerStart = function($task)
{
    SessionModel::SetDataBase('default');
    RoomModel::SetDataBase('default');
};

$webSocket->onConnect = function ($connection)
{
    $connection->onWebSocketConnect = function($connection)
    {
          //NOT HELPING - I CATCH ERROR MySQL GONE AWAY
        try
        {
            if(
                SessionModel::$dataBase->IsConnected() == false ||
                RoomModel::$dataBase->IsConnected() == false
            )
            {
                SessionModel::SetDataBaseNS('default');
                RoomModel::SetDataBaseNS('default');
            }
        }
        catch(Exception $error)
        {
            SessionModel::SetDataBaseNS('default');
            RoomModel::SetDataBaseNS('default');
        }
          
          // Mysql Requests
        //...
    };
};

$webSocket->onMessage = function ($connection, $message){};


$webSocket->onClose = function ($connection){}

Worker::runAll();
$server->run();

?>

我知道mysql服务器超时,但在CI4上不能工作侦察和设置数据库。我在控制台"php app/Services/BostServer/BoostServer.php start“上运行这个应用程序。4小时后,任何给出"MySQL服务器消失“和请求结果的请求都为null。重新连接和重置db不能给出结果(检查我的代码)。如何解决这个问题?我的英语不好

EN

回答 1

Stack Overflow用户

发布于 2022-04-05 10:39:48

在没有端口号的情况下尝试它(在您的情况下是9090)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71456674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档