在socket服务内,如何调用symfony的doctrine服务操作数据库?

在socket服务内,如何调用symfony的doctrine服务操作数据库?

用symfony框架做的php网站项目,需要用到websocket服务,使用的是socketio写的服务在命令行启动,现在需要在socket服务中进行查询和保存数据库操作,应该怎么实现?

服务器程序如下:
<?php

use Workerman\Worker;
use Workerman\WebServer;
use Workerman\Autoloader;
use PHPSocketIO\SocketIO;
require_once dirname(__DIR__,2).'/vendor/autoload.php';

$io = new SocketIO(2021);
$io->on('connection', function($socket) use($io) {
    $socket->addedUser = false;
    $socket->roleType = '';
    var_dump("connection");
    
    $socket->on("message", function($data) use($socket, $io) {
        var_dump($data);
        //此处需要操作数据库

    });

    // 当断开连接时
    $socket->on('disconnect', function () use($socket, $io, $entityManager) {
        var_dump("disconnect");
    });
});

if (!defined('GLOBAL_START')) {
    Worker::runAll();
}

阅读 1.6k
1 个回答

直接使用PDO都可以的 ,闭包传参数进去

$pdo = new PDO("mysql:host=xxxxxxx;dbname=test", "username", "password123");
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$socket->on("message", function($data) use($socket, $io,$pdo) {
        var_dump($data);
        //此处需要操作数据库
        $rows = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题