1. Surveillance des événements
Processus :
1.1 Créer un événement
php artisan make:event UserLogin
LoginController.php
/** * The user has been authenticated. * * @param \Illuminate\Http\Request $request * @param mixed $user * @return mixed */ protected function authenticated(Request $request, $user) { event(new UserLogin($user)); }
1.2 Créer un écouteur
1.2.1 Méthode 1 : Manuellement create
php artisan make:listener EmailAdminUserLogin --event=UserLogin
1.2.2 Méthode 2 : Recommander la méthode suivante : Générer automatiquement les événements et les auditeurs
//应用程序的事件监听器映射 class EventServiceProvider extends ServiceProvider { /** * The event listener mappings for the application. * * @var array */ protected $listen = [ 'App\Events\UserLogin' => [ 'App\Listeners\UserLogin\EmailAdminUserLogin', 'App\Listeners\UserLogin\TraceUser', 'App\Listeners\UserLogin\AddUserLoginCounter', ], 'App\Events\UserLogout' => [ 'App\Listeners\UserLogout\EmailAdminUserLogout', 'App\Listeners\UserLogout\TraceUser', ], ]; /** * Register any events for your application. * * @return void */ public function boot() { parent::boot(); Event::listen('event.*', function ($eventName, array $data) { // }); } }
Générer les événements et les auditeurs : php artisan event:generate
2. Fonction de planification des tâches (tâche planifiée) de Laravel Planification des tâches
Méthode d'appel 2.1
protected function schedule(Schedule $schedule) { $schedule->call(function (){ \Log::info('我是call方法实现的定时任务'); })->everyMinute(); }
Exécution : php artisan schedule:run
Mode crontab 2.2
Mode commande 2.2
Générer la commande : php artisan make:command SayHello
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class SayHello extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'message:hi'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { //书写处理逻辑 \Log::info('早上好,用户'); } }
Kernel.php
protected function schedule(Schedule $schedule) { $schedule->command('message:hi') ->everyMinute(); }
Exécution : php artisan schedule:run
3.1 Paramètres du pilote nécessaires
QUEUE_DRIVER=database
php artisan queue:table
php artisan migrate
Générer une classe de tâches :
php artisan make:job SendReminderEmail
Après avoir écrit la classe de tâches, vous pouvez la distribuer via la fonction auxiliaire
. Le seul paramètre qui doit être transmis à est une instance de cette classe de tâches : dispatch
dispatch
Utilisez la fabrique de modèles pour générer 30 utilisateurs :
class SendReminderEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $user; /** * Create a new job instance. * * @param User $user */ public function __construct(User $user) { $this->user = $user; } /** * Execute the job. * * @return void */ public function handle() { \Log::info('send reminder email to user' . $this->user->email); } }
génère 5 tâches de file d'attente : jobs
3.4 Exécuter le processeur de file d'attente
public function store(Request $request) { $users = User::where('id','>',24)->get(); foreach ($users as $user){ $this->dispatch(new SendReminderEmail($user)); } return 'Done'; }
Sachez qu'une fois la commande lancée, elle s'exécutera jusqu'à ce que vous l'arrêtiez manuellement ou que vous fermiez la console queue:work
Vous pouvez le spécifier en utilisant l'option Ne traiter qu'une seule tâche dans la file d'attente
Route::get('/job', 'UserController@store');
--once
Extension : utilise pour gérer la file d'attente, et est utilisé pour surveiller les tâches de la file d'attente et nous aide automatiquement à les exécuter lorsqu'il y a des tâches dans la file d'attente, éliminant ainsi le besoin de taper manuellement la commande Beanstalkd
pour garantir que notre file d'attente peut être exécutée correctement Supervisor
php artisan
《 Recommandations associées :