加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

seata-php研发怎样做 要了解哪些知识

发布时间:2023-07-19 12:52:14 所属栏目:语言 来源:
导读:今天就跟大家聊聊有关“seata-php开发怎样做,要了解哪些知识”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“seata-php开发怎样做,要了解哪

今天就跟大家聊聊有关“seata-php开发怎样做,要了解哪些知识”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“seata-php开发怎样做,要了解哪些知识”文章能对大家有帮助。

seata/seata-php 目前是基于 hyperf 框架开发的的一个分布式事物组件包,并且兼容 swoole 和 swow 两个协程扩展,希望后面的开发者们也能考虑到兼容这两个协程扩展

前置知识

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

seata

hyperf开发文档

swoole文档

swow

如何启动项目

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

# 根据自己实际情况来创建目录

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 组件包开发相关的文档

组件开发指南

ConfigProvider 机制

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 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();

}

}

最后附带一下 hyperf 的生命周期文档 hyperf-生命周期事件。

“seata-php开发怎样做,要了解哪些知识”的内容就介绍到这里了,感谢大家的阅读。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!