ThinkPHP 延迟更新
🏷️ ThinkPHP
当需要频繁更新一些统计字段的时候,为了减少数据库压力,ThinkPHP 提供了延迟更新的功能。
php
$coin = D('test_coin');
$coin->where(1)->setLazyInc('coin', 100, 10);
return $coin->find(1);
coin
值加 100,10s 后更新到 DB。
同理 setLazyDec
方法是减法的延迟更新。
注意点
关于实际更新到的 DB 的时间点,跟预想是有差距的。实际的更新时间并不是第一次该语句执行的 10s 后,而是 10s 后该语句再次被调用时(即,10s 后若该语句再也没被调用过,则永远不会被更新到 DB)。
由于用的 3.2.2 版本的 ThinkPHP,
Model
需要 继承AdvModel
,否则没有该方法。