最近在学习swoole,自己完成下论坛里留下的作业,通过swoole_websocket实时展示mysql数据,有个遗留问题,如何判断mysql是否有增删改,我想到的方法有:
1、在应用层中有增删改时,发一个消息到消息队列来监听。
2、解析mysql bin-log日志。
3、触发器。
现在的解决办法是利用触发器,例子中我只监听了一个表,当有多个表时,需要添加大量触发器,触发器本身占用很多资源,太多触发器也不好管理,之后会再想办法解析下bin-log日志来监听Mysql数据变化。
服务端代码
/**
* Created by PhpStorm.
* User: qyc
* Date: 2017/10/22
* Time: 下午4:40
*/
define('HOST', '0.0.0.0');
define('PORT', '9502');
define('WORKER_NUM', 8);
define('DISPATCH_MODE', 2);
define('DAEMONIZE', 0);
class swoole_ws
{
private $pdo;
private $server;
//这里写死了数据表,之后完成数据库监听后改写这里逻辑
private $table
= [
'swoole_test',
];
public function __construct()
{
$this->server = new swoole_websocket_server(HOST, PORT);
$this->server->set(
[
//开启woker进程数
'worker_num' => WORKER_NUM,
//请求分发策略,
'dispatch_mode' => DISPATCH_MODE,
//是否守护进程
'daemonize' => DAEMONIZE,
]
);
$this->server->on('message', [$this, 'onMessage']);
$this->server->on('open', [$this, 'onOpen']);
$this-&g