怎么写一个程序一直监控着数据库的变化
发布于:2022-01-17 09:50:54
#1 Kenneth
ignore_user_abort();
set_time_limit(0);
//-----------------------------------
我用这两个函数写了一个文件,坚持不了多久,就断开了。
//----------------------------------------------------------------------------------------------
大侠们,帮帮忙想想办法。
2012-12-17 10:33:46
#2 jake
ignore_user_abort虽然浏览器会断开,但是一般还是会继续执行程序的。
你说的监视数据库变化,指的是通过浏览器监视还是通过服务器日志的形式监视呢?
如果是浏览器,那么建议你可以做个1秒钟刷新一次的页面,这样监控。或者写个js定时器用ajax请求来检测。
如果是服务器日志,ignore_user_abort是一个方法。另外可以通过命令行执行PHP一直运行的方式来监控。
2012-12-17 20:20:22
#3 Kenneth
jake 发表于 2012-12-17 20:20
ignore_user_abort虽然浏览器会断开,但是一般还是会继续执行程序的。
你说的监视数据库变化,指的是通过 ...
我以前用过AJAX一秒刷新监测的,但是这样不行,因为系统硬件的端口只能一个人链接,一个账号两个人登录的时候,就出现问题了,所以我用了ignore_user_abort(); set_time_limit(0); 做了一个文件,但是不稳定,自己调整了一个星期,实在想不到什么更好的办法了。各位兄弟,朋友,大侠们,给点思路。
2012-12-17 21:32:55
#4 Kenneth
Kenneth 发表于 2012-12-17 21:32
我以前用过AJAX一秒刷新监测的,但是这样不行,因为系统硬件的端口只能一个人链接,一个账号两个人登录的 ...
我解决的问题是,当页面上有操作了,数据库标志位变了,然后我监控程序就可以做对应操作。现在就是监控程序经常运行中断了.
2012-12-17 21:35:17
#5 jake
命令行执行php,用set_time_limit(0);。会挂掉的原因是什么? 在命令行的php.ini上面加上日志看看是为什么挂掉。
知道为什么挂掉就容易解决了。不过一定是在命令行的php做,web软件(apache,nginx等)很多时候自己有过期时间的。
2012-12-17 21:44:14
#6 Kenneth
jake 发表于 2012-12-17 21:44
命令行执行php,用set_time_limit(0);。会挂掉的原因是什么? 在命令行的php.ini上面加上日志看看是为什么 ...
找到原因了,正在调试中,谢谢JAKE帅哥,太感谢你了。
2012-12-18 10:55:27
#7 Kenneth
jake 发表于 2012-12-17 21:44
命令行执行php,用set_time_limit(0);。会挂掉的原因是什么? 在命令行的php.ini上面加上日志看看是为什么 ...
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = mysql_query($sql, $this->conn) ){ //报错是这一行,我把内存挤爆了
return $result;
}else{
spError("{$sql}
执行错误: " . mysql_error());
}
}
/**
* 返回影响行数
*/
//--------------------------------------------------------------------------------------------------------------------
在框架的代码里面,我查询的东西太多了,然后我把内存挤爆了。怎么释放掉?
2012-12-18 16:43:20
#8 jake
模型类的 _db = null ,调用_db的析构函数,析构函数里面有close
2012-12-18 17:21:29
#9 Kenneth
太感谢你了,问题已经解决。
2012-12-20 09:40:36