设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 公司 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

seata-php开发怎样做,要清楚哪些知识

发布时间:2023-01-12 08:39 所属栏目:121 来源:互联网
导读:今天就跟大家聊聊有关seata-php开发怎样做,要了解哪些知识的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇seata-php开发怎样做,要了解哪些知识文章能对大家有帮助。 seata/seata-php 目前是基于 hyper
  今天就跟大家聊聊有关“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开发怎样做,要了解哪些知识”的内容就介绍到这里了,感谢大家的阅读。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读