webparking/laravel-queue-ensurer 问题修复 & 功能扩展

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

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

webparking/laravel-queue-ensurer

Composer 安装命令:

composer require webparking/laravel-queue-ensurer

包简介

This composer package provides a Laravel queue ensurer.

README 文档

README

Laravel Queue Ensurer

Build Status Quality score Code coverage

This package provides a command (queue:ensure-processes) to allow running the Laravel queue worker (queue:work) from the Laravel schedule. This enables a cronjob to ensure that configured queue workers are running. It eliminates the need for a process manager like supervisord, which is not available in all production environments (like when working with DirectAdmin or most other server control panels).

Multiple queues can be configured and the number of desired processes can be configured per queue (which makes it possible to run multiple jobs in parallel). Doing so, allows having the queue configuration in your project's codebase.

This package doesn't care about which queue driver(s) you use and queue:restart still works as normal.

Installation

composer require webparking/laravel-queue-ensurer

By default, the queue:ensure-processes command is configured to run once a minute, ensuring one worker for the default queue. So if that's all you desire, you're good to go.

Configuration

You can publish the configuration file to your project by running php artisan vendor:publish --provider="Webparking\QueueEnsurer\ServiceProvider" --tag="config".

The documentation for the configurable options can be found in the config file.

Working

The queue ensurer works by keeping a cache of process id's (PID's) it has started. Every time the ensurer runs, it does this:

  1. Remove any PID's of stopped processes from the cache. These processes may have been stopped by a server reboot, queue:restart or for any other reason.
  2. Kill processes belonging to no longer configured queue's and remove their PID's from the cache. When a queue was configured to have processes before, but is not configured now.
  3. Kill processes that are no longer required and remove their PID's from the cache. When the number of configured processes is lower than the number of running processes.
  4. Start new processes and add their PID's to the cache. When the number of configured processes is higher than the number of running processes.

This means that the ensurer will not take in account any processes it has not started itself.

For the PID cache, the ensurer uses a JSON file (storage/app/queue-listener-pids.json) instead of the Laravel cache mechanism. If the queue ensurer were to use the Laravel cache and the cache were to be cleared (php artisan cache:clear), the running processes would not be known to the ensurer any longer. Resulting in it starting new processes, without every killing the old ones.

Contribution and development

We're happy to receive pull requests or issues.

When developing, you can run composer test to execute all code quality checks and tests.

Future features

These are features we may add. We don't have a specific need for them now, but we acknowledge their usefulness and we will add them when we have some down time. Should you or your project require one or more of these future features earlier, please submit a PR or create an issue.

  • Testing compatibility with Lumen

Licence and Postcardware

This software is open source and licensed under the MIT license.

If you use this software in your daily development we would appreciate to receive a postcard of your hometown.

Please send it to: Webparking BV, Cypresbaan 31a, 2908 LT Capelle aan den IJssel, The Netherlands

webparking/laravel-queue-ensurer 适用场景与选型建议

webparking/laravel-queue-ensurer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16.15k 次下载、GitHub Stars 达 64, 最近一次更新时间为 2019 年 03 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「queue」 「php」 「laravel」 「queues」 「ensurer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

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

围绕 webparking/laravel-queue-ensurer 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

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

GitHub 信息

  • Stars: 64
  • Watchers: 5
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-03-25