在构建大型 Laravel 应用时,后台任务的处理常常是不可或缺的一部分。然而,如何有效地监控这些任务的执行状态和进度,以便及时发现问题并提供更好的用户体验,一直是一个挑战。imtigger/laravel-job-status 是一款优秀的 Laravel 扩展包,它提供了一种简洁而强大的方式来跟踪队列任务的执行情况。
Composer在线学习地址:学习地址imtigger/laravel-job-status 通过以下特性解决了 Laravel 队列任务监控的难题:
JobStatus Eloquent 模型,方便你查询和管理任务状态。使用 imtigger/laravel-job-status 非常简单,只需以下几个步骤:
<code class="bash">composer require imtigger/laravel-job-status</code>
Trackable trait:<code class="php"><?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Imtigger\LaravelJobStatus\Trackable;
class MyJob implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels, Trackable;
public function __construct(array $params)
{
$this->prepareStatus();
$this->params = $params;
$this->setInput($this->params);
}
public function handle()
{
$max = 100;
$this->setProgressMax($max);
for ($i = 0; $i <= $max; $i++) {
// 模拟耗时操作
sleep(1);
$this->setProgressNow($i);
}
$this->setOutput(['result' => 'success']);
}
}</code>$jobStatusId:<code class="php"><?php
namespace App\Http\Controllers;
use App\Jobs\MyJob;
use Illuminate\Foundation\Bus\DispatchesJobs;
use App\Http\Controllers\Controller;
class MyController extends Controller
{
use DispatchesJobs;
public function runJob()
{
$job = new MyJob(['param1' => 'value1']);
$this->dispatch($job);
$jobStatusId = $job->getJobStatusId();
// 将 $jobStatusId 返回给前端,用于查询任务状态
return response()->json(['job_status_id' => $jobStatusId]);
}
}</code>$jobStatusId 查询任务状态:<code class="php"><?php
namespace App\Http\Controllers;
use Imtigger\LaravelJobStatus\JobStatus;
use App\Http\Controllers\Controller;
class MyController extends Controller
{
public function getJobStatus($jobStatusId)
{
$jobStatus = JobStatus::find($jobStatusId);
// 返回任务状态信息给前端
return response()->json($jobStatus);
}
}</code>通过以上步骤,你就可以轻松地在你的 Laravel 应用中实现队列任务的进度跟踪和状态监控。你可以根据 JobStatus 模型中的字段,自定义前端展示,例如进度条、状态信息等,从而提升用户体验。
imtigger/laravel-job-status 的优势在于:
在实际应用中,imtigger/laravel-job-status 可以用于:
总之,imtigger/laravel-job-status 是一个非常实用的 Laravel 扩展包,它可以帮助你更好地管理和监控队列任务,从而提升你的应用的可用性和用户体验。
以上就是使用imtigger/laravel-job-status优雅地追踪Laravel队列任务进度的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号