rob-lester-jr04/call-forwarding
Composer 安装命令:
composer require rob-lester-jr04/call-forwarding
包简介
A methodology that will reduce database writes and improve inbound request handling
关键字:
README 文档
README
Our innovative "CallForwarding" package optimizes database performance during high-traffic scenarios by intelligently queuing up database writes on eloquent models. By consolidating these writes into a single operation, it alleviates strain on database resources, ensuring smooth operations even during peak times. With ForwardSync, your system gains efficiency and resilience, allowing you to focus on delivering exceptional user experiences without worrying about database constraints.
Table of Contents
Installation
Download to your project directory, add README.md, and commit:
composer require rob-lester-jr04/call-forwarding
Usage
For each model you want to implement call forwarding on, include both the trait and the interface.
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Lester\Forwarding\ReceivesCalls; use Lester\Forwarding\ShouldForward; class PageVisit extends Model implements ShouldForward { use ReceivesCalls; }
Then, to make an update or an insert, call callForwarding() before your persist method. Example:
$visit = new PageVisit; $visit->hits = 15; $visit-> forwarded()->save(); // This will return false. That is expected.
Now by default, every minute, anything that has been queued this way will get persisted.
Advanced Configuration
Changing the driver
The package is built in with 3 drivers for the queue. The default is file, but it also includes redis and memcached.
Your choices out of the box are File or Redis. To use the Redis option, add this to your .env file:
CF_DRIVER=redis
Write Callbacks
If you have code you'd like to execute after the write has occured, you can chain the afterForward method with a closure as the parameter. Example.
$model = new PageVisit; $visit->afterForward(function($attrs) { // Do something else with the attributes. })->forwarded()->save();
Publishing the config file.
php artisan vendor:publish --provider="Lester\Forwarding\CallForwardingServiceProvider"
Custom Driver
Too generate your own driver, create a class that implements the CallForwardingDriver interface with the following methods: putItem, getAllItems
Register the custom class in the config file under the handler array and use the slug you defined as the handler.
'handler' => 'my-custom-handler', 'handlers' => [ // ... 'my-custom-handler' => \App\My\Handler::class, ],
<?php namespace App\Handlers; // or whatever namespace you want to use use Lester\Forwarding\Contracts\CallForwardingDriver; use Illuminate\Support\Collection; class MyHandler implements CallForwardingDriver { // Worth noting, $key is only ever 'update' or 'insert' public function putItem($key, $data): void { // Store the db write. } public function getAllItems($key, $purge = false): Collection { // Retrieve the collection of stored db writes // Purge each item if the $purge flag is true. } }
Support
Please open an issue for support.
Contributing
Please contribute using Github Flow. Create a branch, add commits, and open a pull request.
rob-lester-jr04/call-forwarding 适用场景与选型建议
rob-lester-jr04/call-forwarding 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 04 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「redis」 「database」 「cache」 「update」 「batch」 「insert」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rob-lester-jr04/call-forwarding 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rob-lester-jr04/call-forwarding 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rob-lester-jr04/call-forwarding 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
repository php library
Microservice RPC through message queues.
Store your language lines in the database, yaml or other sources
The CodeIgniter Redis package
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-04-15