首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有更有效的方法来更新JSON文件?

有没有更有效的方法来更新JSON文件?
EN

Stack Overflow用户
提问于 2019-06-25 20:26:53
回答 2查看 129关注 0票数 0

我正在开发一个基于浏览器的游戏,对于战斗实例,我需要能够跟踪玩家的生命点以及NPC的生命点。我在想,为每个实例设置一个JSON文件比让一个mySQL数据库不断地处理请求更有意义。我已经成功地创建了JSON文件,提取内容,更新相关的var,然后覆盖该文件,但我想知道是否有比设置更有效的方法来处理它。

代码语言:javascript
复制
$new_data = array(
    "id"=>"$id",
    "master_id"=>"$master_id",
    "leader"=>"$leader",
    "group"=>"$group",
    "ship_1"=>"$ship_1",
    "ship_2"=>"$ship_2",
    "ship_3"=>"$ship_3",
    "date_start"=>"$date_start",
    "date_end"=>"$date_end",
    "public_private"=>"$public_private",
    "passcode"=>"$passcode",
    "npc_1"=>"$npc_1",
    "npc_1_armor"=>"$npc_1_armor",
    "npc_1_shields"=>"$npc_1_shields",
    "npc_2"=>"$npc_2",
    "npc_2_armor"=>"$npc_2_armor",
    "npc_2_shields"=>"$npc_2_shields",
    "npc_3"=>"$npc_3",
    "npc_3_armor"=>"$npc_3_armor",
    "npc_3_shields"=>"$npc_3_shields",
    "npc_4"=>"$npc_4",
    "npc_4_armor"=>"$npc_4_armor",
    "npc_4_shields"=>"$npc_4_shields",
    "npc_5"=>"$npc_5",
    "npc_5_armor"=>"$npc_5_armor",
    "npc_5_shields"=>"$npc_5_shields",
    "ship_turn"=>"$ship_turn",
    "status"=>"$status");

$new_data = json_encode($new_data);
$file = "$id.json";
file_put_contents($file, $new_data);

它可以工作,但我想知道是否有一种方法可以更新单个数组项,而不必取出所有数据,将其分配给vars,然后重写文件。在本例中,我只更改了一个变量(ship_turn)

EN

回答 2

Stack Overflow用户

发布于 2019-06-25 20:35:31

我在想,为每个实例设置一个

文件比让一个mySQL数据库不断地受到请求冲击更有意义。

MySQL已针对此任务进行了优化。

如果您使用文件(如JSON)作为数据库替代,那么您必须处理“竞争条件”,因为文件访问没有针对并发读/写访问进行优化(默认情况下)。

如果你在一个高并发的环境中,你应该避免使用文件系统作为“数据库”。文件系统上的多个操作在PHP中很难实现原子化。

有关更多详细信息,请参阅flock

票数 0
EN

Stack Overflow用户

发布于 2019-06-25 20:39:47

这取决于游戏。对于基于回合的游戏或任何非实时游戏,MySQL方法应该是可以的。毕竟,数据库的设计是为了获得沉重的打击:-)对于实时游戏,我会选择WebSocketNodeJS作为后端。服务器将保持游戏的运行时状态,适当地响应客户端请求并处理竞争条件(就像您在独立的多人服务器上所做的那样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56754050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档