对于我的基于浏览器的Flex游戏(适用于Facebook平台),我使用PHP和MySQL进行服务器端编程和保存数据(使用amfPHP)
由于我对游戏开发和PHP都很陌生并且我想看到我的游戏正在运行,我已经编写了所有服务器端编码(amfPHP服务),其中包含非常难看和脏的代码,这些代码命中数据库进行获取,更新游戏状态(包括玩家统计和库存)。
绝对不高效,所以我开始找到PHP中用于实现缓存的最佳方法。通过缓存,我的意思是我不想一直打到数据库以保存播放器的最新游戏状态,但只是在会话结束时保存(当玩家离开应用程序时)。
通常情况下,我的游戏/应用流程就像这样
现在,很少有一些常见的数据可以让所有参与者获得收益,比如“市场项目及其价格和图形资产等”,还有玩家特定的数据。
我脑子里有一些想法,我需要专家帮助我的想法是好是坏还是有更好的方法?
将静态(常用)数据永久保存在缓存中,并使用管理面板清除/更新 身份验证后,检索数据并保存在缓存中(作为JSON对象)和所有读/写,直到会话结束将对缓存完成,会话结束后,将缓存数据保存到DB中。
我想在这里使用APC。你觉得它可靠吗?
我想,在最坏的情况下,当网络服务器崩溃时,所有缓存数据都将丢失,所以我想将它们保存在会话中,但我认为PHP将它们保存在文件中,这意味着会有很多I / O再次不推荐?或者这可以接受吗?
我也在想在序列化对象中保存游戏状态有多好?
答案 0 :(得分:4)
您是否对应用程序进行了分析并将数据库识别为瓶颈?看起来你正试图优化那些根本不是问题的东西。
从数据库中获取数据非常快。写入DB可能会慢一些,尤其是在使用事务时。但是DB仍然可以轻松地每秒处理大量的写/更新调用。
看起来你正在进行一些过早的优化,这会降低整个游戏的安全性和稳定性......这根本不值得,除非你真的认为写入DB是一个性能瓶颈。然后你真的不想失去用户进度,因为你的会话被破坏了。最好再看看NoSQL之类的内容。