MVC重复读取数据库的优化

其实我也不知道实际效果能提升多少,也说不定是无用功……不过,感觉上应该是有效的。

 

 

在写PHP的时候,用了CI的框架,在多个程序员之间协作的话,为了方便调用,为了提高代码重用性,我一般都会让接口参数尽量简单化,基本上所传入的参数都是ID。

比如WEBGAME的一个读取玩家信息的函数,只传入这个玩家的ID,读取玩家某个道具的函数只传入玩家ID和道具ID。

 

于是后来就出现一个情况

我在一步操作里,经过A函数,A函数先要去读取玩家模型里某一个玩家的信息,然后再经过B函数,B函数只接收到玩家的ID,但又需要再次用到玩家的信息……

 

也就是说

A函数从数据库读取一次玩家信息

B函数再次从数据库读取一次玩家信息

 

曾经有一次我用$this->output->enable_profiler(TRUE);打印出所有的SQL语句,同一操作竟然被重复了近20次。太浪费了。

 

最后决定采用一个优化方法

改写读取玩家信息的函数,将玩家信息放进$this->player_info[$player_id]中,接着再次读取时,可以直接返回这个数据而不用再次读取数据库

 

以下是实现的函数

 

$reflash默认为0,表示优先读取$this->player_info[$player_id]的内容

$reflash为1时,强制从数据库中读取

 

$this->player_info[]设为数组是为了读取多个玩家信息时不冲突。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值