在mysql发生更改时调用pusher

在mysql发生更改时调用pusher,mysql,pusher,Mysql,Pusher,使用pusher将mysql数据库更改推送到管理员屏幕,而不进行管理员交互,这有多可能 pusher可以在mysql上运行某种类型的侦听器进行更改,还是pusher简单地执行某种奇特的轮询 总而言之,这种设置将如何编码 非常感谢一个简单的示例或链接。在MySQL中,这需要一个带有轮询循环的管理应用程序 如果为它设计MySQL模式,轮询循环可能会很便宜。它可以查询感兴趣的表,查找最新的时间戳或最新的行id 但是它仍然需要投票。你有几个选择。最常见的方法是在更改数据库时在应用程序层处理此问题。当然,

使用
pusher
mysql
数据库更改推送到管理员屏幕,而不进行管理员交互,这有多可能

pusher
可以在
mysql
上运行某种类型的侦听器进行更改,还是
pusher
简单地执行某种奇特的轮询

总而言之,这种设置将如何编码


非常感谢一个简单的示例或链接。

在MySQL中,这需要一个带有轮询循环的管理应用程序

如果为它设计MySQL模式,轮询循环可能会很便宜。它可以查询感兴趣的表,查找最新的时间戳或最新的行id


但是它仍然需要投票。

你有几个选择。最常见的方法是在更改数据库时在应用程序层处理此问题。当然,这意味着您需要在代码中的一个奇点更新数据库,而这并不总是可能的。但是,如果可能的话,我会推荐这种解决方案

轮询是另一种选择,尽管显然实时性较差。您只需编写一个脚本来检查这些条件,并在情况发生变化时调用pusher-API

另一种可能性是将MySQL触发器与自定义插件一起使用,以便在数据库发生更改时可以立即调用Pusher API。这是目前为止最复杂的解决方案,我并不推荐它。有关原因,请参阅的第一个答案。

在更新、插入和删除时通过MySQL触发器调用PubNub推送消息 ⚠️ <强大>战斗这可能会导致数据库速度减慢。如果每次插入都使用sysexecing curl,这将导致相对较差的性能。最好还有一个触发器将消息写入另一个表,并有另一个进程检查循环中的新行

MySQL使您可以通过存储过程轻松地将代码封装到易于访问的触发器中。你可以用pusher创建类似的东西,我知道如何用PubNub来实现;下面是关于PubNub和MySQL的快速指南。简单是你所追求的,这里是你的解决方案!我将引导您通过一种简单的方法将表上的任何更新插入删除操作绑定到一个存储函数,该函数每次都会被调用,使用PubNub可以轻松地向您的移动和web应用程序发送推送通知

PubNub推送消息 注意:确保您的程序类型正确DOUBLEVARCHARTEXT

MySQL触发器代码插入示例 注意:确保在推送消息中包含此处所需的列

MySQL触发器代码更新示例 通过调试控制台监视推送消息 -您可以通过PubNub开发控制台观看触发器的触发。通过这种方式,您可以了解需要更改哪些参数,以及在PubNub websocket等移动和Web设备上接收的每个推送通知中需要包含哪些重要数据

在JavaScript中接收推送消息

(功能(){
publinub.init({
订阅密钥:“演示”,
ssl:true
}).订阅({
频道:“mysql_触发器”,
回调:函数(mysql\u触发器\u详细信息){
警报(mysql\u触发器\u详细信息);
}
});
})();

现在,您已经具备了通过简单的过程直接从MySQL发送和接收更改事件所需的步骤。还有一些方法可以优化此方法,例如向对HTTPS推送通知进行队列和池处理的守护进程发出信号。这应该非常有效。

我想知道这个url是什么:SET cmd=CONCAT('curl','p2','p3','22');这个URL表示从MySQL发送信号。我现在明白了,唯一的问题是在Windows上安装sys_eval(),我试过了,因为我正在本地主机上开发我的应用程序
DELIMITER $$
CREATE PROCEDURE push_message
(p1   DOUBLE,
 p2   DOUBLE,
 p3 BIGINT)
BEGIN
 DECLARE cmd CHAR(255);
 DECLARE result CHAR(255);
 SET cmd = CONCAT('curl https://pubsub.pubnub.com/publish/demo/demo/0/mysql_triggers/0/%22',p1, ',' ,p2, ',' ,p3,'%22');
 SET result = sys_eval(cmd);
END$$;
CREATE TRIGGER push_message_trigger AFTER INSERT ON your_table_name_here
FOR EACH ROW
CALL push_message(NEW.Column1, NEW.Column2, NEW.Column3);
CREATE TRIGGER push_message_trigger AFTER UPDATE ON your_table_name_here
FOR EACH ROW
CALL push_message(NEW.Column1, NEW.Column2, NEW.Column3);
<div id=pubnub ssl=on></div>
<script src=//pubnub.a.ssl.fastly.net/pubnub-3.4.5.min.js></script>
<script>(function(){

    PUBNUB.init({
        subscribe_key : 'demo',
        ssl           : true
    }).subscribe({
        channel  : 'mysql_triggers',
        callback : function(mysql_trigger_details) {
            alert(mysql_trigger_details);
        }
    });

})();</script>