Maison  >  Article  >  développement back-end  >  我做了一个投票项目,不想每一次投票都去访问一次数据库,想要在一定时间之后才更新数据库,应该如何操作了?

我做了一个投票项目,不想每一次投票都去访问一次数据库,想要在一定时间之后才更新数据库,应该如何操作了?

WBOY
WBOYoriginal
2016-06-23 14:24:10961parcourir

数据库 延时 延迟 投票

我做了一个投票项目,不想每一次投票都去访问更新一次数据库,想要在一定时间之后才更新数据库,应该如何操作了?

回复讨论(解决方案)

如果投票后不立即更新数据库,那么显示出的投票结果不就不正确么?

实时性的功能,没必要批量插入。

如果投票后不立即更新数据库,那么显示出的投票结果不就不正确么? 我想是一分钟更新一次数据库

我能想到的比较直接的方法是:

将投票结果写入一个文本文件,格式可以是SQL语句(推荐),也可以是数据的简单dump。

后台跑一个cron的工作,每隔一分钟扫描该软件,用一些标记(比如上次处理的最大ID,timestamp)来过滤需要更新的内容到数据库。

可以把投票结果分时间段存入数组,数组写入一个临时文件,每隔一段时间提取这个文件,然后清空这个文件,跟4楼的思路差不多!

用队列吧!这样应该挺方便,数据实时还便捷~

使用缓存比如memcache如何?

每过一段时间批量读取并写入数据库 同时清空memcache

做一个b,把数据写到表b里,隔断时间把b的数据更新到a里面。

和 4 5 7楼想法差不多 创建临时文件 存储然后 到时间读到库里面去

写入文件 再存入数据库?
那么数据库还有什么用处?

我建议 你还是直接写入数据库吧
文件的并发其实不好处理的
而且 从读取文件 和数据库的角度来说我觉得 还是数据库比较方便

数据库就是干这个的。你的这个项目是个非常小的项目。

mysql内存表处理数据。

我能想到的比较直接的方法是:

将投票结果写入一个文本文件,格式可以是SQL语句(推荐),也可以是数据的简单dump。

后台跑一个cron的工作,每隔一分钟扫描该软件,用一些标记(比如上次处理的最大ID,timestamp)来过滤需要更新的内容到数据库。
我就是以这个思路来做的

可以把投票结果分时间段存入数组,数组写入一个临时文件,每隔一段时间提取这个文件,然后清空这个文件,跟4楼的思路差不多!
你说的每隔一段时间提取文件应该如何操作了?PHP的程序都是触发以后才运行的吧,如何可以每隔一段时间自动提取这个文件了?

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php 加密狗的调用方法Article suivant:yii relations求救