我的理解,這個和數據庫,php有關,thinkphp沒多大關系,捏可以在數據庫新建一個字段,內容是上家是誰,每當此用戶賣出去一單,就找他的上家,在找他上家的上家,他上家的上家的上家,三次,如果有某一次沒有找到,就說明他沒有上家,終止此次循環,在循環內做你想要的操作
創新互聯成立于2013年,是專業互聯網技術服務公司,擁有項目網站設計、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元石家莊做網站,已為上家服務,為石家莊各地企業和個人服務,聯系電話:18980820575
我們經常會遇到操作一張大表,發現操作時間過長或影響在線業務了,想要回退大表操作的場景。在我們停止大表操作之后,等待回滾是一個很漫長的過程,盡管你可能對知道一些縮短時間的方法,處于對生產環境數據完整性的敬畏,也會選擇不做介入。最終選擇不作為的原因大多源于對操作影響的不確定性。實踐出真知,下面針對兩種主要提升事務回滾速度的方式進行驗證,一種是提升操作可用內存空間,一種是通過停實例,禁用 redo 回滾方式進行進行驗證。
仔細閱讀過官方手冊的同學,一定留意到了對于提升大事務回滾效率,官方提供了兩種方法:一是增加 innodb_buffer_pool_size 參數大小,二是合理利用 innodb_force_recovery=3 參數,跳過事務回滾過程。第一種方式比較溫和,innodb_buffer_pool_size 參數是可以動態調整的,可行性也較高。第二種方式相較之下較暴力,但效果較好。
兩種方式各有自己的優點,第一種方式對線上業務系統影響較小,不會中斷在線業務。第二種方式效果更顯著,會短暫影響業務連續,回滾所有沒有提交的事務。
請看手冊:
使用 transaction 方法操作數據庫事務,當發生異常會自動回滾,例如:
自動控制事務處理
Db::transaction(function(){
Db::table('think_user')-find(1);
Db::table('think_user')-delete(1);
});
也可以手動控制事務,例如:
// 啟動事務
Db::startTrans();
try{
Db::table('think_user')-find(1);
Db::table('think_user')-delete(1);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
注意在事務操作的時候,確保你的數據庫連接是相同的。
網站欄目:多級分銷數據回滾php的簡單介紹
網頁鏈接:http://vcdvsql.cn/article44/hhheee.html
成都網站建設公司_創新互聯,為您提供企業建站、網站建設、網站設計、微信小程序、搜索引擎優化、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯