最好的办法是,在应用程序生命周期内,对于数据库设置有事件钩子,用于监听程序对于数据库的操作。这样非常方便处理逻辑流程。
为辽阳县等地区用户提供了全套网页设计制作服务,及辽阳县网站建设行业解决方案。主营业务为网站设计、成都网站建设、辽阳县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1 - 表的数据变化
表数据发生了变化,毫无疑问是写操作,包括以下几种情形:
新建条目 create
更新条目 update
删除条目 delete
以上三种都是写操作,会对表数据写入。
2 - 事件钩子
既然需要实时监控,那么每个数据库的操作,都需要考虑在内,这是全局的监听。
以laravel的Eloquent ORM 模型触发事件,允许你挂接到模型生命周期的如下节点: retrieved、creating、created、updating、updated、saving、saved、deleting、deleted、restoring 和 restored。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。
模型内添加事件监听钩子
如果重用率很高,那么使用观察者 Observer 方式进行监听更为高效。
Laravel Observer
结语
上面的方法要求读者有laravel框架的使用基础,对于构建中大型应用非常有利。
假设这个页面有一个功能需要操作并返回某字符串,还用一下代码可以实现执行并读取返回值。
$fp = fopen("","r");
$ret= fgetss($fp,255);
echo $ret."br";
fclose($fp);
参考思路如下:
1、在监听的时候把监听到的内容存储起来,数据库/文件/缓存都行。
2、在浏览器能访问的脚本中把内容显示出来就行了;
3、或者直接用websocket来监听,接受到数据直接写在页面上。
?php
//设置运行时间:永不超时
set_time_limit (0);
//开启缓冲
ob_implicit_flush ();
//IP地址
$ip = "127.0.0.1";
//监听端口
$port = 80;
//创建socket
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if (!$socket){
die("创建socket失败!").socket_strerror(socket_last_error());
}
//绑定socket
$bind = socket_bind ($socket, $ip, $port);
if (!$bind){
die("绑定.socket失败!").socket_strerror ($bind);
}
//监听socket
$listen = socket_listen ($socket);
if (!$listen){
die("监听失败!").socket_strerror ($listen);
}
echo "{$port}端口监听成功!";
?