1 Star 1 Fork 1

ZSwoole / ZS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

运行模式

Swoole 运行

// 启动  Test配置文件 BinConfig 目录下
php server.php start --conf-Test

// 重启 
php server.php reload --conf-Test

// stop 不推荐
ps -ef |grep -i Test |awk '{print $2}' |xargs kill -9 

Cli 运行

// 控制器 方法  key value ....
php cli.php Tests run  key value 

特性

脚本服务

  • 脚本服务 参数server_type 仅可使用 HTTP (默认)
  • 高度依赖 Redis (worker进程任务)

框架自带进程应用 \PipProcess\Dispense::class 可用于:

  • 可自定义分配 worker 进程任务
  • 自定义worker 进程空闲重启时间
        // 分配任务
        \swoole_timer_tick(5000, [self::class, 'saveWorkConfig']);

        // todo 每10分钟 定时重启 可自定义
        \swoole_timer_tick(1000 * 600, [\Library\Kill::class, 'reloadWorker']);

脚本形式 Worker 进程分配任务

从上面分配任务定时器可以看到子进程启动分配worker 进程任务任务可自定义, 具体操作如下:

<?php

namespace Controller;

use Library\Logger;
use Core\BaseController;

class Test extends BaseController
{
   /**
    *  worker 进程启动时 如果有分配任务 会根据默认路由 调用默认路由的 init 方法
    *  
    *   //默认路由 init
    *  'autoRoute' => \Controller\Test::class,
    */
    public function init()
    {
        // 初始铺单配置
        $pudanInfo = SettingModel::savePudanConfig();

        // 初始化铺单配置
        Logger::pudanInfo(['初始铺单配置 =>' => $pudanInfo]);

        // 每 300MS 更新对标交易对价格
        \swoole_timer_tick(300, [PudanService::class, 'benchmarkPrice']);

        // 设置定时器 更新铺单配置
        \swoole_timer_tick(5000, [SettingModel::class, 'saveConfig']);        
    }

    /**
     * 子进程调用默认路由中 taskDispense 方法 返回值为任务列表
     * ------------------------------------------------------------
     */
    public function taskDispense()
    {
        // 获取需要铺单的交易对
        $pudanList = PudanListModel::pudanList();

        $taskList = [];

        // 分配铺单任务
        foreach ($pudanList as $pudanInfo) {

            if (empty($pudanInfo['benchmark_exchange'])) continue;

            // 任务参数 交易对 sig 标识 交易平台
            $taskList[] = [
                $pudanInfo['symbol'],                                           // 交易对
                $pudanInfo['ac_name'],                                          // sig 账号标识
                $pudanInfo['strategy'],                                         // 策略
                $pudanInfo['timidRate'],                                        // 最怂比例参数 万分比
                $pudanInfo['serviceRate']                                       // 手续费率 万分比
            ];
        }

        // 默认数组key 相当于 分配的worker进程ID
        return $taskList;        
    }
}

对外接口服务

支持 Tcp Http Webscocket 协议, 框架兼容Swoole4.2版本, enable_coroutine 参数为 flase 使用 go 调用协程 (复杂业务不推荐使用swoole协程).

杂项:

异常总结

  1. PHP Warning: Swoole\Server::start(): onPipeMessage handler error.
  • ProcessManager::sendToWorker($workerId, $taskInfo, [Central::class, 'taskRouter']);

  • 抛错: PHP Warning: Swoole\Server::start(): onPipeMessage handler error.

  • 修复 $taskInfo 外层包数组

  • ProcessManager::sendToWorker($workerId, [$taskInfo], [Central::class, 'taskRouter']);

空文件

简介

一个很简单实用 的 swoole 框架 麻雀虽小, 五脏俱全 展开 收起
PHP
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/ZSwoole/ZS.git
git@gitee.com:ZSwoole/ZS.git
ZSwoole
ZS
ZS
master

搜索帮助