定制 itsemon245/laravel-pausable-job 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

itsemon245/laravel-pausable-job

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

itsemon245/laravel-pausable-job 适用场景与选型建议

itsemon245/laravel-pausable-job 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 39 次下载、GitHub Stars 达 13, 最近一次更新时间为 2024 年 07 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 itsemon245/laravel-pausable-job 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 itsemon245/laravel-pausable-job 我们能提供哪些服务?
定制开发 / 二次开发

基于 itsemon245/laravel-pausable-job 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

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