我做了一个投票项目,不想每一次投票都去访问一次数据库,想要在一定时间之后才更新数据库,应该如何操作了?
回复讨论(解决方案)
如果投票后不立即更新数据库,那么显示出的投票结果不就不正确么?
实时性的功能,没必要批量插入。
如果投票后不立即更新数据库,那么显示出的投票结果不就不正确么? 我想是一分钟更新一次数据库
我能想到的比较直接的方法是:
将投票结果写入一个文本文件,格式可以是SQL语句(推荐),也可以是数据的简单dump。
后台跑一个cron的工作,每隔一分钟扫描该软件,用一些标记(比如上次处理的最大ID,timestamp)来过滤需要更新的内容到数据库。
可以把投票结果分时间段存入数组,数组写入一个临时文件,每隔一段时间提取这个文件,然后清空这个文件,跟4楼的思路差不多!
用队列吧!这样应该挺方便,数据实时还便捷~
使用缓存比如memcache如何?
每过一段时间批量读取并写入数据库 同时清空memcache
做一个b,把数据写到表b里,隔断时间把b的数据更新到a里面。
和 4 5 7楼想法差不多 创建临时文件 存储然后 到时间读到库里面去
写入文件 再存入数据库?
那么数据库还有什么用处?
我建议 你还是直接写入数据库吧
文件的并发其实不好处理的
而且 从读取文件 和数据库的角度来说我觉得 还是数据库比较方便
数据库就是干这个的。你的这个项目是个非常小的项目。
mysql内存表处理数据。
我能想到的比较直接的方法是:
将投票结果写入一个文本文件,格式可以是SQL语句(推荐),也可以是数据的简单dump。
后台跑一个cron的工作,每隔一分钟扫描该软件,用一些标记(比如上次处理的最大ID,timestamp)来过滤需要更新的内容到数据库。
我就是以这个思路来做的
可以把投票结果分时间段存入数组,数组写入一个临时文件,每隔一段时间提取这个文件,然后清空这个文件,跟4楼的思路差不多!
你说的每隔一段时间提取文件应该如何操作了?PHP的程序都是触发以后才运行的吧,如何可以每隔一段时间自动提取这个文件了?