我想知道PubNub是否可以实现这一点。我希望在我的应用程序中实现使用PHP完成数据库处理的实时通信,并使用JavaScript在HTML页面中显示更新。这是场景:
这个相同的PHP文件调用类似的东西:
$ pubnub->发布(阵列( 'channel'=> 'my_test_channel', 'message'=> array('database_id'=>'100') ));
然后,JavaScript浏览器会监听发布给它的任何更新:
function(message){ if(消息中的'database_id'){ //做更多的事情 } });
这个方法可以在用户注册并执行上述步骤的情况下工作,然后管理员可以立即收到他的更新 新用户的管理面板,而不必使用数据库触发器,继续或使用ajax轮询?
答案 0 :(得分:1)
有多种方法可以从服务器调用更新到Web App管理界面和移动应用程序。一种简单的方法是在注册发生时只使用PHP API发布,但是使用MySQL触发器可能会更低级别!
MySQL使您可以通过存储过程将编码打包成易于访问的 TRIGGERS 。你可以用Pusher创建类似的东西,虽然我知道如何用PubNub做到这一点;所以这里是PubNub和MySQL的快速指南。简单就是您所寻求的,这是您的解决方案!我将引导您通过一种简单的方法将表上的任何 UPDATE , INSERT 和 DELETE 操作绑定到将被调用的存储函数时间,使用PubNub轻松向您的手机和网络应用发送推送通知。
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$$;
注意:确保您的PROCEDURE类型正确 DOUBLE 或 VARCHAR 或 TEXT 。
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);
http://www.pubnub.com/console?sub=demo&pub=demo&channel=mysql_triggers - 您可以通过PubNub Dev Console查看触发器。通过这种方式,您可以了解需要更改哪些参数以及哪些数据对于您可以包含在PubNub websocket以及移动和Web设备上可以接收的每个推送通知中非常重要。
<div id=pubnub ssl=on></div>
<script src=//pubnub.a.ssl.fastly.net/pubnub-3.3.1.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>
现在,您已经完成了通过简单程序直接从MySQL发送和接收更改事件所需的步骤。还有一些方法可以优化此方法,例如向守护进程发出信号,该进程对HTTPS推送通知进行排队和汇集。这应该是非常有效的。