【发布时间】:2013-01-03 16:14:14
【问题描述】:
我的网页游戏中的用户将某些玩家信息缓存在 PHP 的 $_SESSION 中。 每次加载游戏时,它都会检查会话是否存在,如果不存在,则从 MySQL 数据库中获取玩家信息,然后将其存储在 $_SESSION 中。
现在我的问题是,如果玩家信息被另一个进程或玩家更新了怎么办?他们无法更新其他玩家的 $_SESSION 缓存。
我知道 memcached 很可能是解决这个问题的方法,但我不确定我是否应该花时间做这样的事情。 $_SESSION 缓存对我来说很好,除了这个。
- 我正在考虑为其创建一个 MySQL 表,该表在每次请求时都会被读取,并且如果有玩家记录它会重新创建缓存。
- 另一种解决方案是在目录中创建一个文件,文件名中包含播放器的 ID。每个请求 PHP 都会检查
file_exist是否应该清除缓存。
你们会怎么做?它会在每个请求中执行,因此优化这一点非常重要。
【问题讨论】:
-
将选择数据库选项,在速度方面,良好的数据库架构不会有很大的不同。但这不仅关乎速度,还关乎更好的管理
-
如果不是非常特殊的情况,您总是会选择数据库。在现实世界中,RMDB 可能比平面文件更快(如果数据已经加载到内存或完整的表适合可用内存。)
标签: php mysql memcached innodb