saas用php實現的方法:1、建立分管後台並分配開通帳號;2、將tp的資料庫操作方法進行改造成公共方法;3、後台使用session進行儲存“saas_id”,並將固定方法進行查詢;4、將請求方法封裝並固定增加「saas_id」即可。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
saas怎麼用php實作?
關於PHP透過分錶實現saas功能
先淺談下我對saas的理解,saas就是相當與把自己的專案當作一個平台,透過分帳號的手段讓子使用者使用平台功能
首頁我嘗試第一種方式是透過將每個表都增加一個saas_id進行區分,目前我一個表格資料量大概在6萬條,如果增加10家用戶使用那就是60w條,無論是看還是改效率肯定都不是特別的高,因為後台數據量增加後還考慮按年度進行分錶,所有就放棄這種方法其次就想的是分庫,因為按照年度進行分錶在安照不同子用戶進行分庫是最合適不過的,但是由於種種原因就沒有使用這個方法, 最後使用的是分錶。因為這個專案功能已經開發完成,現在需要的是大概是這幾步
第一步,就寫個開通帳號的功能,這裡自己可以寫個分管後台去分配開通帳號,或者寫個小程式h5等讓使用者自己去申請,以下是我分錶產生資料庫的方法
$exist = Db::query('show tables like "ms_user' . $id . '"'); if (!$exist) { 方法1: $sql = <<<sql CREATE TABLE ms_user{$id} LIKE ms_user; sql; Db::execute($sql); 方法二: $sql = <<<sql CREATE TABLE ms_apply{$id} LIKE ms_apply; sql; Db::execute($sql); $sql = <<<sql INSERT ms_apply{$id} SELECT * FROM ms_apply; sql; Db::execute($sql); die; } }
大概原理就是,先看看這個saas_id有無已將產生的資料表了,以防萬一!其中內容不需要複製內容到新表的就按照方法一直接複製表結構就行,像是一些公共表需要將公共內容複製到新表中的就需要按照方法二的第二步將資料添加到新包
下面是分錶後的表格結構:
第二步驟我是將tp的資料庫操作方法進行改造成公共方法以方便替換之前程式碼這樣看似屌絲其實省不少力氣
//db类 function dbs($table=''){ $table=$table.session('user.saas_id'); return Db::name($table); } function dba($table=''){ $table=$table.input('param.saas_id'); return Db::name($table); }
後台使用登入後使用session進行儲存saas_id查詢將固定方法進行查詢,前台將請求方法封裝固定增加saas_id
#欄位請求,如果又想說自己都是用的model去查詢資料庫,不使用Db類的可以聯絡我。
…先更新到這裡,後續再續更,不明白的可以私聊我!
推薦學習:《PHP影片教學》
以上是saas怎麼用php實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!