php入門到就業線上直播課:進入學習
API 檔案、設計、偵錯、自動化測試一體化共同作業工具:
本篇文章主要是希望能幫助大家參與到 seata/seata-php 的開發中來,並且提供一些前置知識的講解。
seata/seata-php 目前是基於 hyperf
框架開發的的一個分散式事物元件包,並且相容 swoole
和 swow
兩個協程擴充套件,希望後面的開發者們也能考慮到相容這兩個協程擴充套件
希望大家在參與 seata/seata-php 開發之前一定一定一定要先了解以下的東西
首先我們需要找個檔案目錄將程式碼下載下來
# 根據自己實際情況來建立目錄 mkdir ./seata-dev
接下來進入到我們的目錄內
# 根據自己實際情況來建立目錄 cd ./seata-dev
我們將 seata/seata-php clone 下來
# 根據自己實際情況來建立目錄 git clone [email protected]:seata/seata-php.git
接下來根據自己是使用swoole,還是swow分別執行以下的命令來建立框架專案,附帶一份 hyperf 專案建立檔案 hyperf
# swoole composer create-project hyperf/hyperf-skeleton # swow composer create-project hyperf/swow-skeleton # 使用 swow 擴充套件建議使用 hyperf3.0 版本 composer create-project hyperf/swow-skeleton:dev-master
接下來是進入到專案內將剛剛 clone
下來的 seata/seata-php
載入到專案內
首先我們需要修改專案內的 composer.json
檔案,新增如下內容
{ "require": { "hyperf/seata": "dev-master" }, "repositories": { "seata": { "type": "path", "url": "../seata-php" } } }
最後在目錄再專案的目錄內執行 composer update -o
即可。
並且使用命令 php bin/hyperf.php vendor:publis hyperf/seata
釋出一下 seata 組態檔
最後使用 php bin/hyperf.php start
啟動專案
最後的最後有興趣的小夥伴也可以深入瞭解一下 hyperf
元件包開發相關的檔案
最後給大家講解一下
seata/seata-php
專案是怎麼啟動的
我們可以看一下 seata/seata-php
專案內 Hyperf\Seata\Listener\InitListener
的程式碼 link:InitListener
<?php declare(strict_types=1); /** * This file is part of Hyperf. * * @link https://www.hyperf.io * @document https://hyperf.wiki * @contact [email protected] * @license https://github.com/hyperf/hyperf/blob/master/LIC */ namespace Hyperf\Seata\Listener; use Hyperf\DbConnection\Db; use Hyperf\Event\Contract\ListenerInterface; use Hyperf\Framework\Event\MainWorkerStart; use Hyperf\Seata\Annotation\GlobalTransactionScanner; use Hyperf\Seata\Rm\DataSource\DataSourceProxy; use Hyperf\Server\Event\MainCoroutineServerStart; class InitListener implements ListenerInterface { protected GlobalTransactionScanner $globalTransactionScanner; protected DataSourceProxy $dataSourceProxy; public function __construct(GlobalTransactionScanner $globalTransactionScanner, DataSourceProxy $dataSourceProxy) { $this->globalTransactionScanner = $globalTransactionScanner; $this->dataSourceProxy = $dataSourceProxy; } public function listen(): array { // 我們這裡監聽了下面兩個事件,在 server 啟動時候,則開始執行該監聽器 return [ MainCoroutineServerStart::class, MainWorkerStart::class, ]; } public function process(object $event) { // Execute any sql to init the database connection Db::select('select 1'); // Init TM and RM clients // 這裡則是開始初始化 TM 和 RM 的使用者端 $this->globalTransactionScanner->initClients(); } }
最後附帶一下 hyperf
的生命週期檔案 hyperf-生命週期事件
推薦學習:《》
以上就是怎麼進行seata-php開發?開發指南淺析的詳細內容,更多請關注TW511.COM其它相關文章!