溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行seata-php開發(fā)

發(fā)布時(shí)間:2022-09-27 09:37:03 來源:億速云 閱讀:108 作者:iii 欄目:編程語言

今天小編給大家分享一下如何進(jìn)行seata-php開發(fā)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

前置知識(shí)

希望大家在參與 seata/seata-php 開發(fā)之前一定一定一定要先了解以下的東西

  • seata

  • hyperf開發(fā)文檔

  • swoole文檔

  • swow

如何啟動(dòng)項(xiàng)目

首先我們需要找個(gè)文件目錄將代碼下載下來

# 根據(jù)自己實(shí)際情況來創(chuàng)建目錄
mkdir ./seata-dev

接下來進(jìn)入到我們的目錄內(nèi)

# 根據(jù)自己實(shí)際情況來創(chuàng)建目錄
cd ./seata-dev

我們將 seata/seata-php clone 下來

# 根據(jù)自己實(shí)際情況來創(chuàng)建目錄
git clone git@github.com:seata/seata-php.git

接下來根據(jù)自己是使用swoole,還是swow分別執(zhí)行以下的命令來創(chuàng)建框架項(xiàng)目,附帶一份 hyperf 項(xiàng)目創(chuàng)建文檔 hyperf

# swoole
composer create-project hyperf/hyperf-skeleton 

# swow
composer create-project hyperf/swow-skeleton

# 使用 swow 擴(kuò)展建議使用 hyperf3.0 版本
composer create-project hyperf/swow-skeleton:dev-master

接下來是進(jìn)入到項(xiàng)目?jī)?nèi)將剛剛 clone 下來的 seata/seata-php 加載到項(xiàng)目?jī)?nèi)

首先我們需要修改項(xiàng)目?jī)?nèi)的 composer.json 文件,添加如下內(nèi)容

{
    "require": {
        "hyperf/seata": "dev-master"
    },
    "repositories": {
        "seata": {
            "type": "path",
            "url": "../seata-php"
        }
    }
}

最后在目錄再項(xiàng)目的目錄內(nèi)執(zhí)行 composer update -o 即可。

并且使用命令 php bin/hyperf.php vendor:publis hyperf/seata 發(fā)布一下 seata 配置文件

最后使用 php bin/hyperf.php start 啟動(dòng)項(xiàng)目

最后的最后有興趣的小伙伴也可以深入了解一下 hyperf 組件包開發(fā)相關(guān)的文檔

  • 組件開發(fā)指南

  • ConfigProvider 機(jī)制

seata-php 是在何時(shí)啟動(dòng)的

最后給大家講解一下 seata/seata-php 項(xiàng)目是怎么啟動(dòng)的

我們可以看一下 seata/seata-php 項(xiàng)目?jī)?nèi) 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  group@hyperf.io
 * @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
    {
        // 我們這里監(jiān)聽了下面兩個(gè)事件,在 server 啟動(dòng)時(shí)候,則開始執(zhí)行該監(jiān)聽器
        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();
    }
}

以上就是“如何進(jìn)行seata-php開發(fā)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI