我是靠谱客的博主 自信夏天,这篇文章主要介绍怎么进行seata-php开发?开发指南浅析,现在分享给大家,希望可以做个参考。

怎么进行seata-php开发?本篇文章带大家聊聊seata-php开发指南,讲解一些前置知识,希望对大家有所帮助!

本篇文章主要是希望能帮助大家参与到 seata/seata-php 的开发中来,并且提供一些前置知识的讲解。

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

前置知识

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

  • seata

  • hyperf开发文档

  • swoole文档

  • swow

如何启动项目

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

复制代码
1
2
# 根据自己实际情况来创建目录 mkdir ./seata-dev
登录后复制

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

复制代码
1
2
# 根据自己实际情况来创建目录 cd ./seata-dev
登录后复制

我们将 seata/seata-php clone 下来

复制代码
1
2
# 根据自己实际情况来创建目录 git clone git@github.com:seata/seata-php.git
登录后复制

接下来根据自己是使用swoole,还是swow分别执行以下的命令来创建框架项目,附带一份 hyperf 项目创建文档 hyperf

复制代码
1
2
3
4
5
6
7
8
# 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 文件,添加如下内容

复制代码
1
2
3
4
5
6
7
8
9
10
11
{ "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 项目内 HyperfSeataListenerInitListener 的代码 link:InitListener

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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 HyperfSeataListener; use HyperfDbConnectionDb; use HyperfEventContractListenerInterface; use HyperfFrameworkEventMainWorkerStart; use HyperfSeataAnnotationGlobalTransactionScanner; use HyperfSeataRmDataSourceDataSourceProxy; use HyperfServerEventMainCoroutineServerStart; 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视频教程》

以上就是怎么进行seata-php开发?开发指南浅析的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是自信夏天最近收集整理的关于怎么进行seata-php开发?开发指南浅析的全部内容,更多相关怎么进行seata-php开发内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(153)

评论列表共有 0 条评论

立即
投稿
返回
顶部