php中有没有什么方法可以实现实时监听数据库中的某张表的变化

php中有没有什么方法可以实现实时监听数据库中的某张表的变化,第1张

最好的办法是,应用程序生命周期内,对于数据库设置有事件钩子,用于监听程序对于数据库的 *** 作。这样非常方便处理逻辑流程。

1 - 表的数据变化

表数据发生了变化,毫无疑问是写 *** 作,包括以下几种情形:

新建条目 create

更新条目 update

删除条目 delete

以上三种都是写 *** 作,会对表数据写入。

2 - 事件钩子

既然需要实时监控,那么每个数据库的 *** 作,都需要考虑在内,这是全局的监听。

以laravel的Eloquent ORM 模型触发事件,允许你挂接到模型生命周期的如下节点: retrieved、creating、created、updating、updated、saving、saved、deleting、deleted、restoring 和 restored。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。

模型内添加事件监听钩子

如果重用率很高,那么使用观察者 Observer 方式进行监听更为高效。

Laravel Observer

结语

上面的方法要求读者有laravel框架的使用基础,对于构建中大型应用非常有利。

在android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能会搂关cursor而导致程序内存未释放等等。其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化。

 ContentObserver的构造函数需要一个参数Hanlder,因为ContentObserver内部使用了一个实现Runnable接口的内部类NotificationRunnable,来实现数据库内容的变化。需要使用hanlder去post消息。注册ContentObserver的方法是:getContentResolver().registerContentObserver(uri, notifyForDescendents, observer).

 上面3个参数为:uri----Uri类型,是需要监听的数据库的uri.

 notifyForDescendents---boolean true的话就会监听所有与此uri相关的uri。false的话则是直接特殊的uri才会监听。一般都设置为true.

 observer-----ContentObserver 就是需要的contentobserver.

 初始化一个ContentObserver对象,重载onChange(boolean ),在这个方法里去 *** 作数据库的使用,针对变化后的使用。

1、打开cmd输入netca。

2、选择【本地net服务名配置】→下一步

3、选择【添加】→下一步。

4、在【服务名】中输入你想要连接的服务器上的oracle服务的名字→下一步。

5、选择【tcp】→下一步。

6、在【主机名】中输入你想要连接的服务器ip,端口号不变→下一步。

7、选择【进行测试】→下一步。(当然你也可以选择不测试)

※1测试如果不通过,点击【更改登录】输入一个肯定能登入的【用户名】和【口令】→确定,出现【正在连接...测试成功。】表明测试成功。

※2测试不通过的话,点【上一步】确认你写的【服务名】和【主机名】,确认无误的情况下,确认你要连接的服务器oracle监听服务已经打开。

8、在【net服务名中】输入你想要使用的本地的服务名→下一步。

※就是【sqlplus

user/passwd

@本地服务名】。

9、选择【否】→下一步。

10、出现【net服务配置完毕】字样→下一步。

11、点击【完成】完成服务配置。

12、在上面服务配置完成以后,在cmd中输入如下命令即可远程登录oracle服务器:

sqlplus

user_name/password@本地服务名

一定记住,上面的本地服务名是你第8步写的服务名。

13、如果sqlplus

能够进入,PLSQL

Developer也就可以了。

---

以上,希望对你有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10064953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存