All Projects → luxixing → Swoole Task

luxixing / Swoole Task

Licence: mit
分布式任务处理框架,基于swoole扩展,使用composer打包

Projects that are alternatives of or similar to Swoole Task

Laravel S
LaravelS is an out-of-the-box adapter between Swoole and Laravel/Lumen.
Stars: ✭ 3,479 (+2385%)
Mutual labels:  task, swoole
fast-laravel
基于Swoole的高性能HTTP服务器,加速您Laravel应用程序。
Stars: ✭ 33 (-76.43%)
Mutual labels:  task, swoole
Game Ddz
♦️ 使用Hyperf框架开发斗地主游戏
Stars: ✭ 116 (-17.14%)
Mutual labels:  swoole
Swoole Game
基于Swoole扩展开发游戏服务器框架,示例实现h5游戏开发
Stars: ✭ 131 (-6.43%)
Mutual labels:  swoole
Charroom
PHP + Swoole 聊天室
Stars: ✭ 125 (-10.71%)
Mutual labels:  swoole
Php Ext Xlswriter
🚀 PHP Extension for creating and reader XLSX files.
Stars: ✭ 1,734 (+1138.57%)
Mutual labels:  swoole
Mix
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server
Stars: ✭ 1,753 (+1152.14%)
Mutual labels:  swoole
Dfs
A distributed file server framework based on swoole and inotify
Stars: ✭ 112 (-20%)
Mutual labels:  swoole
Hyperf Chat
Hyperf Chat
Stars: ✭ 139 (-0.71%)
Mutual labels:  swoole
Dottask
Simple and easy go task framework, support loop & cron & queue
Stars: ✭ 124 (-11.43%)
Mutual labels:  task
Swoole Docker
See: https://github.com/swoole/docker-swoole
Stars: ✭ 132 (-5.71%)
Mutual labels:  swoole
Smproxy
Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 A MySQL database connection pool based on MySQL protocol and Swoole.
Stars: ✭ 1,665 (+1089.29%)
Mutual labels:  swoole
Ytask
YTask is an asynchronous task queue for handling distributed jobs in golang(go异步任务框架)
Stars: ✭ 121 (-13.57%)
Mutual labels:  task
Zhttp
基于swoole的异步轻量级web框架,内部封装协程异步非阻塞全套mysql、redis、mongo、memcached连接池,可以轻松start、reload、stop,加入数据库的查询模块,框架已经封装好近乎同步写法,底层异步调用
Stars: ✭ 131 (-6.43%)
Mutual labels:  swoole
Netclient Ios
Versatile HTTP Networking in Swift
Stars: ✭ 117 (-16.43%)
Mutual labels:  task
Runner
Simple, lightweight task runner for Bash.
Stars: ✭ 133 (-5%)
Mutual labels:  task
Swoole Tadpole
tadpole chatroom (maybe spermium) powered by swoole and slim framework
Stars: ✭ 116 (-17.14%)
Mutual labels:  swoole
Backgroundtask
An infinite backgroundTask based on playing blank audio file ...
Stars: ✭ 122 (-12.86%)
Mutual labels:  task
Yasd
Yet Another Swoole Debugger
Stars: ✭ 127 (-9.29%)
Mutual labels:  swoole
Unitask
Provides an efficient allocation free async/await integration for Unity.
Stars: ✭ 2,547 (+1719.29%)
Mutual labels:  task

swoole-task

swoole-task是基于PHP swoole扩展开发的一个异步多进程任务处理框架,服务端和客户端通过http协议进行交互。

它适用于任务需要花费较长时间处理,而客户端不必关注任务执行结果的场景.比如数据清洗统计类的工作,报表生成类任务。

环境要求

  • PHP 5.4 以上版本,强烈推荐适用5.6,性能更好
  • Swoole 1.8.7 以上版本
  • PDO PDO_Mysql

安装方法

鉴于目前composer已经成为PHP包管理事实的标准,swoole-task直接支持通过composer 命令安装使用。

关于composer的使用请参考 composer 官网学习。

假设当前我们项目的名称为play,需要在项目中集成swoole-task,服务,执行如下命令。

#由于某种不知名原因,访问 packagist太慢,可使用国内镜像
#composer config repo.packagist composer https://packagist.phpcomposer.com
composer require "ping/swoole-task:dev-master"

如果项目根目录中不存在composer.json文件,需要执行composer init 命令。

使用方法

安装完成之后,在项目的vendor/bin 目录下会有swoole-tssk.php这个脚本,此脚本就是swoole-task服务的管理脚本。

以默认配置启动swoole-task服务

php swoole-task.php start 

第一次启动会执行初始化动作。

关于swoole-task.php脚本的详细说明

  • 参数
--app  应用目录名称,默认 sw-app,可根据自己需求设置
--nodaemon 以非守护进程模式启动,默认读取配置文件http_server.php 中的 daemonize的值
--help 显示帮忙
--host 指定绑定的ip 默认读取配置文件 http_server.php中的host取值
--port 指定绑定的端口,默认读取配置文件中的 http_server.php中的port的取值
  • 命令
start   //启动服务
stop    //停止服务
restart //重启,配置文件常驻内存,修改后需要重启
status  //查看状态
list    //swoole-task服务列表

用例说明:

//启动swoole-task服务,以项目根目录下的sw目录为业务目录
php swoole-task.php --app sw start 
//停止swoole-task 服务
php swoole-task.php -app sw stop
//启动swoole-task 服务,使用默认app目录(sw-app),使用host和port 覆盖默认配置
php swoole-task.php --host 127.0.0.1 --port 9520 start
//显示服务状态
php swoole-task.php --app sw status

配置说明

第一次使用 php swoole-task.php start 启动服务的时候,默认的业务逻辑编写目录是sw-app,和vendor在同级目录。

自动生成如下目录结构

- sw-app  和vendor是同级目录
    - Conf 配置文件目录,不可更改
        - http_server.php 主要是针对HttpServer的配置
        - app.php 主要是对实际业务的配置
        - dev  开发环境配置文件目录(列如 db.php redis.php等等,文件名为key值)
        - test 测试环境配置文件目录
        - prod 生产环境配置文件目录
    - Runtime 运行时输出目录
    - Ctrl  controller目录,可修改app.php配置文件,使用别的名称来替代Ctrl
    - Dao 数据访问业务Dao,可修改app.php配置文件,使用别的名称替代Dao
    - Helper 帮助类,修改配置文件可以使用别的名称

默认配置文件说明

app.php(没强迫症建议直接使用默认配置不必修改)

ns_pre  命名空间前缀,默认值 SwTask
ns_ctrl  ctrl类的命名空间,注意命名空间和ctrl类是一致的,遵循psr4规则,
ns_dao dao类的命名空间
ns_helper heper类的命名空间

http_server.php(修改配置好之后需要重启加载配置文件)

tz  时区设置,默认是上海时区,数据处理的时候非常重要
host 监听的主机ip地址,默认配置0.0.0.0
port 监听的主机端口,默认值 9523
app_env swoole-task 业务的环境,支持dev,test,prod三个值
ps_name 进程名称前缀 默认 swTask
daemonize 是否守护进程模式 0 非守护进程 1 守护进程,默认0
worker_num worker 进程数量,推荐数量和cpu核数保持一致
task_woker_num 任务进程数量,根据机器配合和实际需求设置
task_max_request 每个任务进程最多可处理请求数,超过重启,保证内存不泄露的机制

swoole-task 服务启动流程说明

初次运行swoole-task,执行php vendor/bin/swoole-task.php 命令,不添加任何参数,会执行如下初始化工作

1 根据默认配置,创建Ctrl, Dao,Helper,
 Conf, Conf/test, Conf/dev, Conf/prod, Runtime, Runtime/log 目录,
2 创建TplCtrl,TplDao 文件,写入到Ctrl/Dao 目录下,作为模板文件
3 初始化配置文件app.php , http_server.php,写入到Conf目录下

运行 php swoole-task.php 命令,不添加任何参数,会在项目根目录下检查是否存在sw-app 目录。

如果不存在,执行初始化工作;

如果存在,加载sw-app/Conf目录下的相关配置,启动服务。

路由说明

客户端和服务端http协议交互,形式如下

curl "127.0.0.1:9523/ctrlName/actionName"

curl "127.0.0.1:9523?op=ctrlName.actionName"

初始化后,默认生成的TplCtrl.php 文件,其中包含了一个 helloAction的方法

访问这个action的命令为

curl "127.0.0.1:9523/tpl/hello"

或者

curl "127.0.0.1:9523?op=tpl.hello"

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].