怎么进行seata-php开发?开发指南浅析

php入门到就业线上直播课:进入学习
API 文档、设计、调试、自动化测试一体化协作工具:点击使用
本篇文章主要是希望能帮助大家参与到 seata/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 [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 组件包开发相关的文档
组件开发指南
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 [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-生命周期事件
推荐学习:《PHP视频教程》
-
C#CheckedListBox控件用法详解(属性、方法、事件) 时间:2025-12-12 -
-
minidump.dmp是什么文件?怎么打开?可以删除吗? 时间:2025-12-12 -
teniodl.exe是什么进程?怎么彻底关闭? 时间:2025-12-12 -
display:block是什么意思?display:block属性的作用? 时间:2025-12-12 -
什么是updater.exe?怎么删除?如何关闭? 时间:2025-12-12
今日更新
-
2026最新poipiku官网中文版入口-poipiku网站怎么打开
阅读:18
-
动漫国纯净版下载入口-无广告安卓版1.0.0.7一键获取最新下载入口
阅读:18
-
婆媳关系的梗是什么梗 揭秘当代家庭最火相处段子背后真相
阅读:18
-
THETA币价格走势解析:关键影响因素及未来趋势预测
阅读:18
-
快手网页版一键直达-快手网页版官方入口链接
阅读:18
-
樱花风车动漫app官方版下载入口一键获取-樱花风车动漫软件安卓免费版高速下载入口
阅读:18
-
yy漫画官方登录入口免费 2025最新网页版直达
阅读:18
-
欧易平台THETA币视频流应用优势解析与使用指南
阅读:18
-
漫蛙2最新版下载入口-漫蛙2手机版高速下载
阅读:18
-
破补是什么梗?揭秘网络热词背后的搞笑真相,看完秒懂!
阅读:18










