如何高效实时读取数据库内容

beijing_girl 2014-04-16 10:10:01
想实时读取数据库内容并记录文件,如果数据库有新内容添加的话能不能只从新添加的记录开始读取,读取过的历史数据不再读取?
以下是我现在的代码,这段代码每次都会循环读取数据库所有记录,帮忙看看能怎么优化


$output=fopen("writefile.txt","a");
while(1)
{
$sql = "select id,content from table";
$query = mysql_query($sql);

while($gtrw=mysql_fetch_array($query))
{

if( !array_key_exists($gtrw['id'],$resultarr[$gtrw['id']]) )
{
$resultarr[$gtrw['id']]=1;
fputs($output,$logstr);
}

}

sleep(5);

...全文
452 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PhpEr_贵 2014-04-16
  • 打赏
  • 举报
回复 1
可不可以在这张表中增加一个字段,保存该记录是否被度去过,下次读取的时候直接用where条件限制读取未读取过的条件,可以给这个字段加索引,这样过滤的时间段,也可以过滤掉很多不用扫描的行
net_php 2014-04-16
  • 打赏
  • 举报
回复
这个需求我也遇到过,我是查询一条记录,就是最后插入的ID,然后再从大于这个ID开始查询,当然这样做效率不咋地,如果应付简单的可以。
xuzuning 2014-04-16
  • 打赏
  • 举报
回复
设主键为 id 每次读取后,记录最大的 id 下次读取从上次记录的 id+1 开始
kwdpx 2014-04-16
  • 打赏
  • 举报
回复
换固态硬盘即可
sykiller2009 2014-04-16
  • 打赏
  • 举报
回复
加个类似的计数器试试,怎么样 今天计数50,明天从50之后开始
beijing_girl 2014-04-16
  • 打赏
  • 举报
回复
表的结构是不能改的

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧