真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Laravel基于reset怎么實現(xiàn)分布式事務(wù)

這篇文章主要講解了“Laravel基于reset怎么實現(xiàn)分布式事務(wù)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Laravel基于reset怎么實現(xiàn)分布式事務(wù)”吧!

成都創(chuàng)新互聯(lián)公司是專業(yè)的豐澤網(wǎng)站建設(shè)公司,豐澤接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行豐澤網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

                           

快速預(yù)覽

安裝laravel5.5 - laravel8之間的版本,然后安裝快速服務(wù)化的package

composer require windawake/laravel-reset-transaction dev-master

首先創(chuàng)建ResetProductController.php控制器,創(chuàng)建ResetProductModel.php模型,創(chuàng)建reset_transaction和reset_product兩張數(shù)據(jù)庫表。這些操作只需要執(zhí)行下面命令全部完成

php artisan resetTransact:create-examples

phpunit.xml增加testsuite Transaction


    
        ......        
            ./vendor/windawake/laravel-reset-transaction/tests
        
    
    ......

最后運行測試命令 ./vendor/bin/phpunit --testsuite=Transaction
運行結(jié)果如下所示,5個例子測試通過。

oot@DESKTOP-VQOELJ5:/web/linux/php/laravel/laravel62# ./vendor/bin/phpunit --testsuite=TransactionPHPUnit 8.5.20 by Sebastian Bergmann and contributors......                                                               5 / 5 (100%)Time: 219 ms, Memory: 22.00 MB

OK (5 tests, 5 assertions)

功能特性

  • 開箱即用,不需要重構(gòu)原有項目的代碼,與MySQL事務(wù)寫法一致,簡單易用。

  • 支持http協(xié)議的服務(wù)化接口,想要支持其它協(xié)議則需要重寫中間件。

  • 支持讀已提交,可重復(fù)讀,與mysql的事務(wù)隔離級別同步。

原理解析

看過《明日邊緣》電影就會知道,存檔和讀檔的操作。這個分布式事務(wù)組件仿造《明日邊緣》電影的原理,每次請求基礎(chǔ)服務(wù)一開始時讀檔,然后繼續(xù)后面的操作,結(jié)束時所有操作全部回滾并且存檔,最后commit把存檔全部執(zhí)行成功。整個過程是遵守兩段提交協(xié)議,先prepare,最后commit。

如何使用

vendor/windawake/laravel-reset-transaction/tests/TransactionTest.php文件為例子

 1,
            'product_name' => $productName,
        ];
        // 開啟分布式事務(wù),其實是生成全局唯一id
        $transactId = $this->beginDistributedTransaction();
        $header = [
           在header 'transact_id' => $transactId,
        ];
        // 分布式事務(wù)內(nèi),請求都需要在request header帶上transact_id
        $response = $this->post('api/resetProduct', $data, $header);
        $product = $response->json();
        // 分布式事務(wù)提交,也是接口請求,把之前的存檔記錄全部處理
        $this->commitDistributedTransaction($transactId);

        $response = $this->get('/api/resetProduct/' . $product['pid']);
        $product = $response->json();
        $this->assertEquals($productName, $product['product_name']);
    }

    private function beginDistributedTransaction()
    {
        return session_create_id();
    }

    private function commitDistributedTransaction($transactId)
    {
        $response = $this->post('/api/resetTransaction/commit', [], ['transact_id' => $transactId]);
        return $response->getStatusCode();
    }

    private function rollbackDistributedTransaction($transactId)
    {
        $response = $this->post('/api/resetTransaction/rollback', [], ['transact_id' => $transactId]);
        return $response->getStatusCode();
    }}

感謝各位的閱讀,以上就是“Laravel基于reset怎么實現(xiàn)分布式事務(wù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Laravel基于reset怎么實現(xiàn)分布式事務(wù)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


網(wǎng)站標題:Laravel基于reset怎么實現(xiàn)分布式事務(wù)
URL地址:http://weahome.cn/article/poidho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部