php – 什么更快? File_exist还是MySQL查询?

我的网页游戏中的用户正在PHP的$_SESSION中缓存某些播放器信息.
每次加载游戏时,它都会检查会话是否存在,如果没有,他们会从MysqL数据库获取玩家信息,然后将其存储在$_SESSION中.

现在我的问题是,如果玩家信息被另一个进程或玩家更新怎么办?他们无法更新其他玩家的$_SESSION缓存.

我知道memcached很可能是解决这个问题的方法,但我不确定我是否应该花时间做这样的事情. $_SESSION缓存对我来说很好,除此之外.

>我正在考虑为它创建一个MysqL表,它可以在每个请求中读取,如果有一个记录,那么它会重新创建缓存.
>另一个解决方案是在文件名中具有播放器ID的目录中创建文件.如果要清除缓存,PHP将使用file_exist检查每个请求.

你们会做什么?它会在每个请求中执行,因此优化这一点非常重要.

解决方法:

仅从设计的角度来看,我就避免使用file_exists和目录方法.当然’file_exists’很快,但它不能很好地扩展……如果用户改名,会发生什么?

如果你正在使用APC(你应该),你可以使用APC的用户内存缓存.只要您在单个服务器上,它就应该为您提供与memcached类似的性能优势,而无需单独的内存缓存服务器进程.如果用户条目经常更改,您可能会遇到APC的碎片问题.在这种情况下,有时间咬住子弹并使用memcached – 您甚至可以将会话数据存储在memcached中以提高性能.

此外,APC或您的file_exists解决方案都不会扩展到多个负载均衡的服务器 – 您需要一个数据库解决方案或memcached.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...