humolot/ci4-bus 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

humolot/ci4-bus

最新稳定版本:v1.0.2

Composer 安装命令:

composer require humolot/ci4-bus

包简介

A full-featured asynchronous Job Bus for CodeIgniter 4 (Queue Worker, Failed Jobs, Delays, Retries, PM2/Supervisor-ready).

README 文档

README

A full-featured asynchronous Job Bus and Queue Worker system for CodeIgniter 4 — similar to Laravel Queues & Horizon, but built specifically for CI4.

Now installable via Composer:

composer require humolot/ci4-bus

✨ Features

  • 🚀 Dispatch async jobs using Bus::dispatch()
  • ⏰ Delayed jobs (Bus::later())
  • 🔁 Automatic retry logic
  • ❌ Failed job storage & management
  • 🧹 Commands to clear jobs and failed jobs
  • 🔄 Retry individual or all failed jobs
  • 🛠 bus:make to scaffold new Job classes
  • 🧵 Custom worker: bus:work
  • 🔧 Configurable (attempts, delay, sleep, restart cycle)
  • 🖥️ Compatible with PM2, Supervisor, Systemd, NSSM (Windows)

📦 Installation

composer require humolot/ci4-bus

Run installer:

php spark bus:install

This will create:

app/Jobs/
app/Jobs/JobInterface.php
app/Jobs/BaseJob.php
app/Config/Bus.php
migrations for jobs & failed_jobs

Run migrations:

php spark migrate

⚙ Configuration (app/Config/Bus.php)

class Bus extends BaseConfig
{
    public int $maxAttempts       = 3;
    public int $delaySeconds      = 5;
    public int $restartAfterJobs  = 500;
    public int $sleepSeconds      = 1;
}

🛠 Creating Jobs

Generate:

php spark bus:make SendEmailJob

Your job:

namespace App\Jobs;

class SendEmailJob extends BaseJob
{
    public function handle(array $data)
    {
        // Your logic here
    }
}

🚀 Using the Package (Correct Path via Composer)

Import the Bus class from vendor:

use Humolot\Bus\Bus;

Bus::dispatch(\App\Jobs\SendEmailJob::class, ['id' => 10]);

Dispatch immediately

Bus::dispatch(\App\Jobs\SendEmailJob::class, [
    'email' => 'user@example.com'
]);

Dispatch later

Bus::later(60, \App\Jobs\SendEmailJob::class, [
    'email' => 'user@example.com'
]);

Bulk dispatch

Bus::bulk([
    ['class' => JobA::class, 'payload' => [...]],
    ['class' => JobB::class, 'payload' => [...], 'delay' => 10]
]);

🧵 Running the Worker

php spark bus:work

🔥 Production Worker Setup

PM2

npm install pm2 -g
pm2 start php --name ci4_bus -- spark bus:work
pm2 save
pm2 startup

Supervisor

[program:ci4_bus]
command=/usr/bin/php /var/www/project/spark bus:work
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/ci4_bus.log

Reload:

supervisorctl reread
supervisorctl update

Windows (NSSM)

nssm install CI4BusWorker

❌ Failed Job Management

php spark bus:failed
php spark bus:failed:retry 12
php spark bus:retry-all
php spark bus:failed:clear

🧹 Clearing Jobs

php spark bus:clear

📁 Folder Structure

Because the package is now installed via Composer, the core lives in:

vendor/humolot/ci4-bus/src

Your application files remain in:

app/Jobs/
app/Config/Bus.php
app/Models/
app/Libraries/Bus.php (auto-published)

📜 License

MIT License.

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-11-16