怎么写一个程序一直监控着数据库的变化

#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