flawlessattila
@flawlessattila

Как использовать живое подключение к mysql (Workerman\Mysql\Connection)?

Использую библиотеку walkor/Workerman для создания websocket.
Также у этого разработчика есть библиотека Workerman\Mysql\Connection для живого подключения к бд.
Может кто работал с этим поможет.

require_once("workerman/vendor/autoload.php");
require_once("mysql/vendor/autoload.php");

// SSL context.
$context = array(
    'ssl' => array(
        'local_cert'  => '/your/path/of/server.pem',
        'local_pk'    => '/your/path/of/server.key',
        'verify_peer' => false,
    )
);

// Create a Websocket server with ssl context.
$ws_worker = new Worker('websocket://0.0.0.0:2346', $context);
$db = new Workerman\MySQL\Connection('host', "port", "user", "pass", "dbname");

// Enable SSL. WebSocket+SSL means that Secure WebSocket (wss://). 
// The similar approaches for Https etc.
$ws_worker->transport = 'ssl';

$ws_worker->onMessage = function ($connection, $data) {
    $query = $db->row("query text");
    // Send hello $data
    $connection->send('Hello ' . $data);
};

Worker::runAll();

Так при подключении клиента и получении сообщения, т.е onMessage, выводит ошибку что db = null

require_once("workerman/vendor/autoload.php");
require_once("mysql/vendor/autoload.php");

// SSL context.
$context = array(
    'ssl' => array(
        'local_cert'  => '/your/path/of/server.pem',
        'local_pk'    => '/your/path/of/server.key',
        'verify_peer' => false,
    )
);

// Create a Websocket server with ssl context.
$ws_worker = new Worker('websocket://0.0.0.0:2346', $context);
$db = new Workerman\MySQL\Connection('host', "port", "user", "pass", "dbname");
$query1 = $db->row("query text");

// Enable SSL. WebSocket+SSL means that Secure WebSocket (wss://). 
// The similar approaches for Https etc.
$ws_worker->transport = 'ssl';

$ws_worker->onMessage = function ($connection, $data) {
   $query2 = $db->row("query text");
    // Send hello $data
    $connection->send('Hello ' . $data);
};

Worker::runAll();

Если проверить и сделать запрос вначале, то в query1 он вернет то что нужно, но в функциях(query2) выйдет та же ошибка

Куда правильно его вставить?
  • Вопрос задан
  • 1083 просмотра
Решения вопроса 1
$ws_worker->onMessage = function ($connection, $data) use ($db) {
// ...
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Dilce989
У меня вопрос к автору, а где вы взяли эту библиотеку, перерыл весь интернет, даже нашел страницу самого Workerman и документацию, обычный mysql вживить не даёт, pdo запрос на подключение сделал, вводя одно сообщение выводит его а затем просто отключает сервер, поделитесь пожауйста
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы