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



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

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

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

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

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

  1. 需要更多时间(打开和关闭)
  2. 需要更多空间
  3. 文件锁定会减慢您的服务器速度(并且是必需的)
  4. 文件将快速增长,因此您拥有的访问者越多,您的服务器就会过载 - 一旦您有大量访问者,就没有机会

阅读以下关于 PHP 中同时请求的讨论:对 PHP 脚本的同时请求

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

相关内容

最新更新