事務操做對不少新人來講,可能有點陌生,即便看了ThinkPHP6官方手冊中事務操做的部分,也仍然不知所解。php
下面就給你們介紹下事務操做laravel
1、先說說使用場景sql
假設我須要給朋友轉帳1000元錢,正常的業務邏輯是:shell
一、銀行從個人帳戶中扣除1000元服務器
二、銀行給朋友帳戶加上1000元。架構
若是一切順利,則轉帳成功!併發
那麼問題來了,若是我不當心把銀行帳戶輸錯,致使銀行查找不到我輸入的銀行帳戶,可是這個時候錢已經從個人帳戶扣除了,如何處理呢?分佈式
咱們生活中常常說「若是錢打不過去,銀行會退回來的」,就是這個意思。微服務
2、事務操做定義高併發
那麼經過上面的例子,咱們理解下到底什麼是事務操做,事務指的是邏輯上的一組操做,組成這組操做的各個單元要麼全都成功,要麼全都失敗。
就如上面的打錢例子,要麼打錢成功,若是不成功,須要把個人錢退回來,也就是返回到初始狀態,也叫作「回滾」。
3、ThinkPHP6中的事務操做
咱們理解了事務操做的使用場景,那麼在ThinkPHP6中如何使用呢?
Db::transaction(function () { Db::table('think_user')->insert(['name'=>'aaa']); Db::table('think_user')->delete(1); });
咱們看上面的例子,只有當咱們插入記錄成功的時候纔會作刪除操做,若是插入不成功,不會作刪除操做。
好比咱們故意寫錯一個字段name1,數據表中沒有name1該字段,插入程序不會執行成功,那麼下面的刪除語句沒有問題,可是他依然不會執行。
除此以外,咱們還能夠手動控制事務。看下面代碼:
// 啓動事務 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事務 Db::commit(); } catch (\Exception $e) { // 回滾事務 Db::rollback(); }
以上就是ThinkPHP6中的事務操做的內容,經過我們實際生活中的例子講解,你們對事務操做就能夠很好的理解了。
好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠
更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)
以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣