怎麼進行seata-php開發?開發指南淺析

2022-09-26 22:00:21
怎麼進行seata-php開發?本篇文章帶大家聊聊seata-php開發指南,講解一些前置知識,希望對大家有所幫助!

php入門到就業線上直播課:進入學習
API 檔案、設計、偵錯、自動化測試一體化共同作業工具:

本篇文章主要是希望能幫助大家參與到 seata/seata-php 的開發中來,並且提供一些前置知識的講解。

seata/seata-php 目前是基於 hyperf 框架開發的的一個分散式事物元件包,並且相容 swooleswow 兩個協程擴充套件,希望後面的開發者們也能考慮到相容這兩個協程擴充套件

前置知識

希望大家在參與 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-php 是在何時啟動的

最後給大家講解一下 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其它相關文章!