PHPackages                             ping/swoole-task - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. ping/swoole-task

ActiveLibrary[Queues &amp; Workers](/categories/queues)

ping/swoole-task
================

基于swoole扩展的异步并发任务处理服务框架

1358024[5 issues](https://github.com/luxixing/swoole-task/issues)PHP

Since Dec 9Pushed 6y ago15 watchersCompare

[ Source](https://github.com/luxixing/swoole-task)[ Packagist](https://packagist.org/packages/ping/swoole-task)[ RSS](/packages/ping-swoole-task/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

swoole-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-服务启动流程说明)

初次运行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"

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1990233?v=4)[luxixing](/maintainers/luxixing)[@luxixing](https://github.com/luxixing)

---

Tags

phpswooletask

### Embed Badge

![Health badge](/badges/ping-swoole-task/health.svg)

```
[![Health](https://phpackages.com/badges/ping-swoole-task/health.svg)](https://phpackages.com/packages/ping-swoole-task)
```

###  Alternatives

[league/geotools

Geo-related tools PHP 7.3+ library

1.4k5.6M30](/packages/league-geotools)[illuminate/bus

The Illuminate Bus package.

6045.5M519](/packages/illuminate-bus)[uecode/qpush-bundle

Asynchronous processing for Symfony using Push Queues

1672.5M2](/packages/uecode-qpush-bundle)[mayconbordin/l5-stomp-queue

Stomp Queue Driver for Laravel 5

121.1k](/packages/mayconbordin-l5-stomp-queue)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
