1. 程式人生 > >淺談thinkPHP中利用快取處理高併發的思路

淺談thinkPHP中利用快取處理高併發的思路

此內容如有問題,請多多指教

Thinkphp預設各類快取都是以檔案快取的

改的話在配置檔案裡改

'DATA_CACHE_TYPE'=>'File',// 資料快取型別,支援:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator

S資料快取與F快速快取最大的區別是:

S能設定快取有效時間,來刪除自動快取資料

而F不能設定只能強制刪除
F('data',NULL);S同理一樣強制刪S('data',NULL)
查詢快取cache預設是true即開啟了快取的
  注意:當向資料庫傳送不同資料庫時,會產生不同的查詢快取檔案,

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->select();像資料庫傳送相同同資料庫時只產生一條查詢快取檔案,

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->find();

處理高併發解決方案:

當我們網站訪問量大了的時候,解決卡頓問題,

方法1:可以從資料庫著手,運用主從式分散式資料庫分配使用者請求資料庫地址,(上了百萬級同理),

假如線上使用者有10w人平均每一個人1秒鐘向資料庫傳送3條資料庫那麼就有30萬資料傳送資料庫,

SQL的量可能會非常巨大,所以有必要設定下快取的佇列長度,例如,我們希望SQL解析快取不超過5000條記錄,可以設定:

1. 'DB_SQL_BUILD_LENGTH' => 5000, // SQL快取的佇列長度
2. 然後分配到各個資料中從而減輕了伺服器的壓力

方法二 從伺服器端運用nginx配置伺服器,(負載均衡)具體有待完善

方法3假如有100000使用者同時在我們p2p平臺借款(其中可能會出現一小部分使用者卡頓借款失敗),為了解決其中出現的的問題,

我們可以設定兩個執行緒:

1.    主執行緒正常執行所有使用者的請求

2.    把所有使用者全部放到事務佇列處理,副執行緒只用來—>讀事務佇列的結果集

提高使用者體驗