slavkluev/yii2-job-progress

这是一个 Yii2 扩展,可以让你知道队列中作业的进度。

v1.0.0 2020-07-26 12:51 UTC

This package is auto-updated.

Last update: 2024-09-26 22:11:13 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

这是一个 Yii2 扩展,可以让你知道队列中作业的进度。

安装

通过 Composer

$ composer require slavkluev/yii2-job-progress

您需要为队列组件添加进度行为。更新配置文件

'components' => [
    'queue' => [
        // ...
        'as progress' => \slavkluev\JobProgress\ProgressBehavior::class,
    ],
],

要向您的应用程序添加迁移,编辑控制台配置文件以配置命名空间迁移

'controllerMap' => [
    // ...
    'migrate' => [
        'class' => 'yii\console\controllers\MigrateController',
        'migrationPath' => null,
        'migrationNamespaces' => [
            // ...
            'slavkluev\JobProgress\migrations',
        ],
    ],
],

然后应用新迁移

$ yii migrate

使用方法

class TestJob extends BaseObject implements \yii\queue\JobInterface
{
    public function execute($queue)
    {
        \Yii::$app->queue->setProgressMax(100);
        for ($i = 0; $i < 100; $i++) {
            \Yii::$app->queue->incrementProgress();
            sleep(1);
        }
    }
}

如果作业已完成并删除,您可以通过 $jobId 查找进度。

$jobProgress = JobProgress::findByJobId($jobId);
echo $jobProgress->getProgressMax() . PHP_EOL;
echo $jobProgress->getProgressNow() . PHP_EOL;
echo $jobProgress->getPercent() . PHP_EOL;

文档

// JobProgress methods
$jobProgress->getProgressMax();                     // Integer
$jobProgress->getProgressNow();                     // Integer
$jobProgress->getPercent();                         // Float

// Queue methods (Call from your Job)
\Yii::$app->queue->setProgressMax(int $value);      // Update the max number of progress.
\Yii::$app->queue->setProgressNow(int $value);      // Update the current number of progress.
\Yii::$app->queue->incrementProgress(int $offset);  // Increase current number of progress by $offset.
\Yii::$app->queue->getProgressMax();                // Integer
\Yii::$app->queue->getProgressNow();                // Integer
\Yii::$app->queue->getPercent();                    // Float

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详情。

安全性

如果您发现任何安全问题,请通过电子邮件 slavkluev@yandex.ru 联系我们,而不是使用问题跟踪器。

致谢

许可协议

MIT 许可协议 (MIT)。请参阅 许可文件 获取更多信息。