phphleb/conductor 问题修复 & 功能扩展

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

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

phphleb/conductor

Composer 安装命令:

composer require phphleb/conductor

包简介

Mutexes for PHP Framework HLEB2

README 文档

README

Use of mutexes in a project (including projects based on the HLEB2 framework)

PHP License: MIT

The use of mutexes is worthwhile in cases, when access to any code is to be locked, until it is executed in the current process or the set locking time period expires. For example, repetitive simultaneous API requests can cause a parallel recording one and the same value into the data base. In order to avoid such event, a section of the code responsible for recording is to be transformed by mutex methods. There are only three such mutex methods: acquire, release and unlock.

FileMutex

use \Phphleb\Conductor\FileMutex;

$mutex = new FileMutex();
if ($mutex->acquire('mutex-name', 20)) { // Start blocking
       try {
       // Custom code.

       } catch (\Throwable $e) {
          $mutex->unlock('mutex-name'); // Force unlock
          throw $e;
       }
   } else {
       throw new \Exception('Custom error text.');
   }
if (!$mutex->release('mutex-name')) { // End of blocking
   // Rolling back transactions
}

When setting the time period for locking (the second argument acquire in seconds), it should be taken into account that, if an active process is unable to unlock the mutex on its own, other processes from the non-sequential queue that have addressed to this code will continue working only after this time period has expired. That is why they will be completed, in a case of a long delay, at the web server level by timeout waiting for a response from the script.

Installation in a project based on the framework HLEB

composer require phphleb/conductor

Create a console commands php console mutex/db-stat, php console mutex/predis-stat and php console mutex/file-stat to get statistics on active mutexes:

php console phphleb/conductor add

composer dump-autoload

Installation in another project

Using Composer (or copy the files into the vendor folder of the project):

$ composer require phphleb/conductor

Own configuration (to be installed once):

use \Phphleb\Conductor\FileMutex;

$config = new MainConfig(); // implements FileConfigInterface, BaseConfigInterface
$mutex = new FileMutex($config);

Files of a mutex type are usually applied only for one backend server; otherwise, you can try to synchronize the folder with the tag files of mutexes. However, if it is possible, it will be better to use mutexes based on storing the tags in the data base.

DbMutex

The locks with the stored status in the data bases – similar implementation of mutexes. The same methods – acquire, release и unlock – are used, as well as connecting your own configuration. The difference lies in the class used for initializing the mutex.

use \Phphleb\Conductor\DbMutex;

$mutex = new DbMutex();

By default, the configuration settings are taken from the mutex.db.type (config/database.php).

Supported MySQL / MariaDB / PostgreSQL.

PredisMutex

Redis is connected in the same way.

composer require phphleb/hredis

Requires predis/predis library.

use \Phphleb\Conductor\PredisMutex;

$mutex = new PredisMutex();

The configuration will be loaded from the redis.db.type setting.

phphleb/conductor 适用场景与选型建议

phphleb/conductor 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 25 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 11 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

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

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

围绕 phphleb/conductor 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-11-30