verseles / progressable
一个用于跟踪和管理不同任务或进程进度的Laravel(不仅限于Laravel)包。
v2.0.0
2024-05-20 18:59 UTC
Requires
- php: >=8.2
- illuminate/cache: ^11
- illuminate/contracts: ^11
- illuminate/support: ^v11
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.1
README
一个用于跟踪和管理不同任务或进程进度的Laravel (不仅限于) 包。
安装
使用Composer安装此包
composer require verseles/progressable
可选地,您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="Verseles\Progressable\ProgressableServiceProvider" --tag="config"
配置
已发布的配置文件提供了以下选项:
return [ 'ttl' => env('PROGRESSABLE_TTL', 1140), // Default cache time-to-live (in minutes) 'prefix' => env('PROGRESSABLE_PREFIX', 'progressable'), // Cache key prefix ];
使用方法
此包提供了一个主特性:Progressable
。
在Laravel中
Progressable
特性可用于任何需要跟踪进度的类。它提供了两个主要方法:updateLocalProgress
和 getLocalProgress
。
"本地"指的是您的类/模型等的进度,而"总体"表示使用相同键名的所有Progressable类的总和。
示例
use Verseles\Progressable; class MyFirstTask { use Progressable; public function __construct() { $this->setOverallUniqueName('my-job')->resetOverallProgress(); } public function run() { foreach (range(1, 100) as $value) { $this->setLocalProgress($value); usleep(100000); // Sleep for 100 milliseconds echo "Overall Progress: " . $this->getOverallProgress() . "%" . PHP_EOL; } } }
use Verseles\Progressable; class MySecondTask { use Progressable; public function __construct() { $this->setOverallUniqueName('my-job'); } public function run() { foreach (range(1, 100) as $value) { $this->setLocalProgress($value); usleep(100000); // Sleep for 100 milliseconds echo "Overall Progress: " . $this->getOverallProgress() . "%" . PHP_EOL; } } }
- 使用
setOverallUniqueName
将进度与特定的总体进度实例关联。 setLocalProgress
更新当前实例的进度。getLocalProgress
获取当前进度。getOverallProgress
获取总体进度数据。resetOverallProgress
重置总体进度(建议在第一次设置唯一名称后使用)。
进度值范围从0到100。
不在Laravel中
您可以通过提供自定义的保存和获取数据方法在不使用Laravel的情况下使用Progressable
特性。
示例
$overallUniqueName = 'test-without-laravel'; $my_super_storage = []; $saveCallback = function ($key, $data, $ttl) use (&$my_super_storage) { $my_super_storage[$key] = $data; }; $getCallback = function ($key) use (&$my_super_storage) { return $my_super_storage[$key] ?? []; }; $obj1 = new class { use Progressable; }; $obj1 ->setCustomSaveData($saveCallback) ->setCustomGetData($getCallback) ->setOverallUniqueName($overallUniqueName) ->resetOverallProgress() ->updateLocalProgress(25); $obj2 = new class { use Progressable; }; $obj2 ->setCustomSaveData($saveCallback) ->setCustomGetData($getCallback) ->setOverallUniqueName($overallUniqueName) ->updateLocalProgress(75);
测试
要运行测试,请执行以下命令:
make
许可证
Progressable包是开源软件,根据MIT许可证授权。