Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entwickle ich Seata-PHP? Kurze Analyse des Entwicklungsleitfadens

Wie entwickle ich Seata-PHP? Kurze Analyse des Entwicklungsleitfadens

青灯夜游
青灯夜游nach vorne
2022-09-26 20:12:064160Durchsuche

Wie entwickle ich Seata-PHP? In diesem Artikel geht es um den Seata-PHP-Entwicklungsleitfaden und um einige erforderliche Kenntnisse. Ich hoffe, dass er Ihnen hilfreich sein wird.

Wie entwickle ich Seata-PHP? Kurze Analyse des Entwicklungsleitfadens

Dieser Artikel soll vor allem dazu beitragen, dass sich alle an der Entwicklung von seata/seata-php beteiligen und einige Vorkenntnisse erklären.

seata/seata-php ist derzeit ein verteiltes Transaktionskomponentenpaket, das auf der Grundlage des hyperf-Frameworks entwickelt wurde und mit swoole und swowkompatibel ist > Zwei Coroutine-Erweiterungen. Ich hoffe, dass zukünftige Entwickler auch über die Kompatibilität mit diesen beiden Coroutine-Erweiterungen nachdenken können >hyperf 框架开发的的一个分布式事物组件包,并且兼容 swooleswow 两个协程扩展,希望后面的开发者们也能考虑到兼容这两个协程扩展

前置知识

希望大家在参与 seata/seata-php 开发之前一定一定一定要先了解以下的东西

如何启动项目

首先我们需要找个文件目录将代码下载下来

# 根据自己实际情况来创建目录
mkdir ./seata-dev

接下来进入到我们的目录内

# 根据自己实际情况来创建目录
cd ./seata-dev

我们将 seata/seata-php clone 下来

# 根据自己实际情况来创建目录
git clone git@github.com: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 项目内 HyperfSeataListenerInitListener 的代码 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
    {
        // 我们这里监听了下面两个事件,在 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();
    }
}

最后附带一下 hyperfIch hoffe, dass jeder die folgenden Dinge verstehen muss, bevor er an der Entwicklung von seata/seata-php teilnimmt: disc;">

  • seata

  • Hyperf-Entwicklungsdokumentation🎜
  • 🎜Swoole-Dokumentation🎜🎜
  • 🎜swow🎜🎜
  • So starten Sie das Projekt🎜Zuerst müssen wir ein Dateiverzeichnis finden, um den Code herunterzuladen🎜 rrreee🎜Als nächstes betreten Sie unser Verzeichnis🎜rrreee🎜Wir werden „seata/seata-php“ klonen🎜rrreee🎜Als nächstes verwenden Sie swoole oder swow, um die folgenden Befehle auszuführen, um ein Framework-Projekt zusammen mit einem Hyperf-Projekterstellungsdokument zu erstellen, je nachdem, was wir sind hyperf🎜rrreee🎜Der nächste Schritt besteht darin, das Projekt einzugeben und der gerade heruntergeladene clone seata/seata-php wird in das Projekt geladen🎜🎜Zuerst müssen wir den composer.json hinzu und fügen Sie den folgenden Inhalt hinzu🎜rrreee🎜Fügen Sie abschließend im Verzeichnis und dann das Projektverzeichnis Composer Update -o aus. 🎜🎜Und verwenden Sie den Befehl php bin/hyperf.php seller:publis hyperf/seata, um die Seata-Konfigurationsdatei zu veröffentlichen. 🎜🎜Verwenden Sie schließlich php bin/hyperf.php start, um Starten Sie das Projekt🎜 🎜Abschließend können sich interessierte Freunde auch die Dokumente zur Entwicklung von hyperf-Komponentenpaketen genauer ansehen🎜

    Wann wurde Seata-PHP gestartet

    🎜Lassen Sie mich abschließend erklären, wie das seata/seata-php-Projekt gestartet wird🎜
    🎜Wir können einen Blick auf das seata/seata-php werfen Code-Link des Projekts HyperfSeataListenerInitListener:InitListener🎜🎜rrreee 🎜Schließlich ist hier das Lebenszyklusdokument des hyperf🎜hyperf-Life-Cycle-Ereignisses🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜

    Das obige ist der detaillierte Inhalt vonWie entwickle ich Seata-PHP? Kurze Analyse des Entwicklungsleitfadens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen