PHP;使用会话或重用查询?

时间:2009-09-28 16:39:12

标签: php mysql performance session

我对在游戏中处理用户数据的更有效方法感兴趣。当有人在玩游戏时,将不断需要从数据库中查询来自服务器的数据。

所以我想知道是否更有效地继续查询数据库或者将第一个查询中的数据存储在会话中,然后在每次需要数据时继续使用会话。

这可能是一个愚蠢的问题,因为我认为会议会更好,但最好是100%肯定:)

3 个答案:

答案 0 :(得分:1)

如果数据仅由相关客户端会话更新,请确保将其缓存在会话中。如果其他进程将更新它,那么您需要从数据库重新获取它或者找出一些方法来使会话的缓存版本无效。

答案 1 :(得分:1)

使用会话会更有效率。但是(假设会话中的数据为缓存)用户未调用的任何其他脚本(更新您正在使用的数据集)应该以某种方式使缓存无效。

这意味着其他脚本可以访问缓存(现在已在会话中保留)。因此,在文件中维护缓存可能更容易(或者您可以使用php_apcmemcached)而不是会话。

我认为有很多缓存类很好,但我唯一的经验是使用Zend_Cache,它非常容易使用。它支持APC,memcached,文件等作为后端(a.k.a存储)

答案 2 :(得分:1)

共享状态进入数据库,除非您已准备好自己管理共享访问,这是一个很大的痛苦。

经常更新的特定于用户的状态会进入会话(如果每次有人按下游戏中的某个键时发出UPDATE,那么您的数据库就已经死了。)

如果您需要超高速会话架构,请尝试使用memcached。