itsemon245/laravel-pausable-job 问题修复 & 功能扩展

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

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

itsemon245/laravel-pausable-job

最新稳定版本:1.0.3

Composer 安装命令:

composer require itsemon245/laravel-pausable-job

包简介

This package makes your laravel jobs pauseable and resumable

README 文档

README

Laravel_pausable_job_banner

Total Downloads Latest Stable Version License

Laravel Pausable Job

This package allows your laravel jobs to be pausable & resumeable by any model in your application on runtime.

Note

Currently it only supports Laravel's Default Database Connection for Queues

The Use Case

Imagine you have an Email Marketing Application where your clients can create Campaigns and send Emails to their Subscribers. A campaign may have thousands of email in it and you want add a feature so your clients can simply pause the campaign and the email will be paused realtime.

Since campaign emails will likely to be processed by the queue using a job we can no longer pause the queue or the jobs for this specific campaign because they have already been dispatched.
That's where this package comes into play. You can simply pause all the jobs related to a perticular model whenever you want.

Installation

composer require itsemon245/laravel-pausable-job

Publish Migration

php artisan vendor:publish --provider="Itsemon245\PausableJob\PausableJobServiceProvider"
php artisan migrate

Usage

  1. Use the Pausable trait in the job that you want to make pausable
//Other imports
 use Itsemon245\PausableJob\Traits\Pausable;

class EmailJob implements ShouldQueue
{
  // Other Traits
   use Pausable;

    public function __construct(public Campaign $campaign)
    {
        /**
         * Set or bind which model is responsible to pause the job
         */
        $this->setPausedBy($campaign);
    }
}
  1. Use the HasPausableJobs trait in the model that you want to use to pause the jobs
//Other imports
 use Itsemon245\PausableJob\Traits\HasPausableJobs;

class Campaign extends Model
{
    //Other traits
   use HasPausableJobs;
}
  1. After using the HasPausableJobs trait your model should have access to the resumeJobs() method to resume the jobs again. You can now pause and resume the jobs by following this example in your controllers.
class CampaignController extends Controller{

  public function pause(Campaign $campaign){
    //Immediately pause all jobs that are related to this campaign 
    $campaign->pauseJobs();
  
    return back();
  }
  
  public function resume(Campaign $campaign){
  // Resume jobs whenever you want
   $campaign->resumeJobs();
  }

}

And with that you now have the ability to pause and resume any job on the fly as long as it relates to a model.

Note

Thank you for considering the package.
This is my first package so feel free to critisize my mistakes & help me overcome them.
And a star would be higly appreciated and will help increase my motivation.

If you have any suggestion please don't hasitate.

Thanks Again & Happy Coding

统计信息

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

GitHub 信息

  • Stars: 14
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-07-09