首页后端开发JAVAPHP-web框架Laravel-队列(二)

PHP-web框架Laravel-队列(二)

时间2023-07-06 05:38:01发布访客分类JAVA浏览542
导读:定义作业在 Laravel 中,定义作业是通过实现 Illuminate\Contracts\Queue\Job 接口来完成的。这个接口定义了一个 fire 方法,用于处理作业的逻辑。下面是一个示例::// app/Jobs/Process...

定义作业

在 Laravel 中,定义作业是通过实现 Illuminate\Contracts\Queue\Job 接口来完成的。这个接口定义了一个 fire 方法,用于处理作业的逻辑。下面是一个示例::

// app/Jobs/ProcessPodcast.php

namespace App\Jobs;
    

use Illuminate\Bus\Queueable;
    
use Illuminate\Contracts\Queue\ShouldQueue;
    
use Illuminate\Foundation\Bus\Dispatchable;
    
use Illuminate\Queue\InteractsWithQueue;
    
use Illuminate\Queue\SerializesModels;


class ProcessPodcast implements ShouldQueue
{
    
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    

    protected $podcast;


    /**
     * Create a new job instance.
     *
     * @param  \App\Podcast  $podcast
     * @return void
     */
    public function __construct(Podcast $podcast)
    {
    
        $this->
    podcast = $podcast;

    }


    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

        // Process the podcast...
    }

}
    
// routes/web.php

use App\Jobs\ProcessPodcast;
    
use App\Podcast;


Route::get('/', function () {
    
    dispatch(new ProcessPodcast(Podcast::find(1)));
    

    return 'Podcast processing started.';

}
    );
    
// app/Providers/AppServiceProvider.php

namespace App\Providers;
    

use Illuminate\Support\ServiceProvider;
    
use Illuminate\Queue\Events\JobProcessed;
    
use Illuminate\Queue\Events\JobProcessing;
    
use Illuminate\Support\Facades\Log;


class AppServiceProvider extends ServiceProvider
{

    public function register()
    {

        //
    }


    public function boot()
    {
    
        // Registering a listener for job processing
        app('queue')->
before(function (JobProcessing $event) {
    
            Log::info('Processing job: '.$event->
    job->
    resolveName());

        }
    );
    

        // Registering a listener for job processed
        app('queue')->
after(function (JobProcessed $event) {
    
            Log::info('Processed job: '.$event->
    job->
    resolveName());

        }
    );

    }

}
    
// .env

QUEUE_CONNECTION=redis

这些代码实现了一个简单的队列作业。当我们访问网站主页时,它会将一个处理播客的作业推送到队列中。我们还注册了两个队列事件监听器来记录作业何时开始处理和何时处理完成。我们将队列连接设置为Redis。

当我们运行作业时,可以在Laravel日志文件中查看两个事件的记录。我们可以使用以下命令查看日志文件:

php artisan log:tail

通过这些代码,我们可以更好地了解如何在Laravel中使用队列来执行后台作业。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

php

若转载请注明出处: PHP-web框架Laravel-队列(二)
本文地址: https://pptw.com/jishu/291350.html
[红明谷CTF 2021]write_shell PHP-web框架Laravel-队列(一)

游客 回复需填写必要信息