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

What happens when 1000 users open and rewrite 1 file simultaneously?

嗯,标题说明了很多。我要制作 1 个文件 object(我们称之为 analytic.json),其中包含 object,例如:

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

在这种情况下,我想跟踪访问者。每个访问者称为 1 个 uniqueID,每次访问者打开一个新页面时,都会引发 visitTimes。 我担心的问题是,当大约> 1000 位访问者同时打开任何页面时,会发生什么情况?

每次打开和重写此文件都是用 fopenfwritefclose 完成的。有什么方法可以在不使用数据库的情况下做得更好吗?我是否需要创建一个函数来对这些进程进行排队?如何?很多问题,真的很感激。

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

  1. 需要更多时间(打开和关闭)
  2. 需要更多space
  3. 文件锁会降低​​您的服务器速度(这是必需的)
  4. 该文件会增长得很快,因此您的访问者越多,您的服务器就越会超载 - 一旦您有大量访问者就不可能了

阅读以下关于 PHP 中同时请求的讨论:Simultaneous Requests to PHP Script

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