php - 什么会更好 : click counter on mysql or on flat file?

标签 php mysql file counter

我一直确信使用平面文件存储实时访问/点击计数器数据更好更快:以追加模式打开文件,锁定它,放入数据,然后关闭。然后每五分钟通过 crontab 读取一次该文件,将内容存储到 DB 并截断文件以获取新数据。 但是今天我的 friend 告诉我,这是错误的方式。最好有一个永久的 MySql 连接,并在每次点击时将数据直接写入数据库。首先,DB可以将结果存储到内存表中。其次,即使我们存储到位于磁盘上的表中,该文件也会由它永久打开,因此无需在磁盘上找到它并在每次查询时一次又一次地打开。

你怎么看?

UPD:我们谈论的是高流量网站,每天约百万。

最佳答案

你的 friend 是对的。写入文件,然后每 5 分钟向数据库发送一个 cronjob?这听起来很复杂。我想不出不直接写入数据库的充分理由。

此外,当您以您描述的方式写入文件时,操作是序列化的。一个用户在写入之前必须等待另一个用户释放锁。如果您需要它,那根本无法扩展。如果您始终写入同一行,数据库也会发生同样的情况,但您可以为同一值设置多行,写入随机的一行,并在需要总计时对它们求和。

在这种情况下使用内存表意义不大。如果您的数据不需要持久化,那么使用您可能已经拥有的内存缓存并简单地增加键的值会简单得多。

关于php - 什么会更好 : click counter on mysql or on flat file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19883233/

相关文章:

php - 匹配 url 中的特定正则表达式单词

javascript - 循环数据表行

java - Mysql和java socket并行压力测试

mySQL精度错误

C程序: Input conditon expression through file

javascript - 是否可以检测颜色是浅色还是深色?

PHP CURL 对于本地主机来说太慢了

PHP strtotime 转换不正确

python - 如何迭代文件中的数据?

php - 使用 php 将 postgres 输出写入文件