当1000个用户同时打开并重写1个文件时会发生什么?

时间:2017-01-17 18:41:03

标签: php analytics fopen

嗯,标题解释了很多。我即将创建一个文件对象(让我们称为analytic.json),其中包含以下对象:

{"country":{"indonesia": 
    [{"uniqueID":'00000000000',"dateVisit":"20170129","visitTimes":17}, 
     {"uniqueID":'00000000001',"dateVisit":"20170129","visitTimes":10}]}}

在这种情况下,我想跟踪访问者。每个访问者称为1个唯一ID,每次访问者打开一个新页面时,visitTimes都会被提升。 我关心的问题是关于>的问题。 1000名访客一次打开任何页面,会发生什么?

每次打开并重写此文件都是在每次完成时使用fopenfwritefclose完成的。没有使用数据库,任何方式做得更好?我是否需要创建一个排队这些过程的功能?如何?很多问题,非常感谢。

1 个答案:

答案 0 :(得分:2)

首先,正如评论中已经提到的那样,您肯定应该为此目的使用数据库。这是为数据库构建的,如果您将文件用作数据库,则会出现以下问题:

  1. 需要更多时间(开启和关闭)
  2. 需要更多空间
  3. 文件锁定会降低服务器的速度(并且需要它)
  4. 文件会快速增长,因此您拥有的访问者越多,您的服务器就会越多 - 一旦您有大量访问者就没有机会
  5. 阅读以下有关PHP中同步请求的讨论:Simultaneous Requests to PHP Script

    而不是使用您的文件解决方案(这是一个坏主意),而不是使用一个很好的数据库概念。您可以更新,查询,锁定并创建一个很好的函数来将当前状态作为JSON提供。