正常PHP-FPM模式下 static可以用做當(dāng)前請(qǐng)求的全局緩存 如下列代碼:
class Model {
static $cache = null;
public function getCache(){
if(self::$cache === null) {
...
self::$cache = ...;
}
return self::$cache;
}
}
業(yè)務(wù)邏輯判斷當(dāng)前模型緩存是否存在 如果存在則直接返回模型緩存 不存在則從數(shù)據(jù)庫(kù)或Redis中獲取 不用每次從Redis或數(shù)據(jù)庫(kù)中獲取。
因?yàn)槭荈PM模式 所以業(yè)務(wù)完成后靜態(tài)變量自動(dòng)清空 不會(huì)相互影響 請(qǐng)問(wèn)webman需要如何實(shí)現(xiàn)?
緩存放request對(duì)象里就行了,請(qǐng)求結(jié)束,請(qǐng)求對(duì)象就釋放了,和php-fpm一個(gè)效果
class Model {
public function getCache(){
$request = request();
if(!isset($request->cache)) {
...
$request->$cache = ...;
}
return $request->$cache;
}
}
這個(gè)代碼不對(duì)吧 $request 這個(gè)是局部變量 這也不是給request()賦值啊 給局部變量復(fù)制 方法運(yùn)行完 就會(huì)自動(dòng)釋放啊