日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache

發(fā)布時間:2023/12/15 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前看到 xiuno 號稱高承載,然后看了一下數(shù)據(jù)庫是 MyISAM 引擎(這個就不提了),一直困擾我的 LIMIT 效率問題發(fā)現(xiàn)它的實現(xiàn)也只是簡單的在 thread.class.php 中判斷超過多少頁之后倒序取數(shù)據(jù)。

后來發(fā)現(xiàn)它統(tǒng)一了 db 和 cache 的方法為 get/set,很喜歡這樣的方式,這樣在 Model 出口之前,對于 Action 來講底層數(shù)據(jù)來源就變得透明了,可以直接配置文件開啟緩存,而 Action 并不需要關(guān)心這些。

但是看到 Model 的抽象基類在調(diào)用 db 和 cache 的時候,貌似統(tǒng)一了方法名也沒帶來什么好處啊?

db

get/set/...

cache

get/set/...

model

get

# cache enable

db_cache_get

cache_get OR db_get&cache_set&cache_get

# cache disable

db_get

set

# cache enable

db_cache_set

cache_set&db_set

# cache disable

db_set

cache_get 和 db_get 中雖然都是獲得相應(yīng)的 instance 然后一致的 get,這個名字統(tǒng)一貌似也沒帶來什么好處嘛...

1、既然要統(tǒng)一,為啥不統(tǒng)一 implements 同一個 interface 或者 extends 同一個 abstract?即使不統(tǒng)一,db 一個 interface,cache 一個 interface,Model 中的 db_get 和 cache_get 還是照樣各自實現(xiàn)各自啊,看到 db/cache/Model 一遍遍的 get/set 實在是... 而且 Model 中各種各樣的 get/set 也感覺有點“野”。前輩們在實現(xiàn)的時候如果有過這樣的場景,是怎么實現(xiàn)的呢?

2、是不是應(yīng)該在 Model 中統(tǒng)一 db 和 cache 操作呢,這樣對于 Action 來說不是更方便透明嗎?一個配置文件就可以開關(guān)緩存,但是發(fā)現(xiàn) CI 和 Yii 的 cache 操作例子中,很多 cache 操作直接穿透到了 Action 中。如果需要統(tǒng)一,那是在 db/cache 和 Model 之間加一層,還是直接在 Model 基類中實現(xiàn)合適呢?

總結(jié)

以上是生活随笔為你收集整理的php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。