我在Workerman (websockets项目)上使用了CodeIgniter4最新版本和Websokets。但过了4个小时我有问题了。MySQL离开了错误。代码示例:
<?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不能给出结果(检查我的代码)。如何解决这个问题?我的英语不好
发布于 2022-04-05 10:39:48
在没有端口号的情况下尝试它(在您的情况下是9090)
https://stackoverflow.com/questions/71456674
复制相似问题