Dieser Artikel bietet Ihnen eine Einführung in die Laravel-Aufgabenplanung (mit Code). Ich hoffe, dass er für Freunde in Not hilfreich ist.
Einführung: Ich habe bereits über die Verwendung von Linux zum Ausführen geplanter Aufgaben geschrieben. Tatsächlich kann Laravel auch geplante Aufgaben ausführen. Die Anforderung besteht darin, die Anzahl der täglich besuchten IPs zu zählen. Obwohl die Datentabelle Daten enthält, erstellen Sie zu Demonstrationszwecken eine neue Listener-Statistik.
IP aufzeichnen
Dieser Artikel stellt die Implementierung von Event/Listener vor und erweitert diese auf dieser Basis.
Registrieren Sie einen neuen Listener und fügen Sie CreateUserIpLog in der Datei app/Providers/EventServiceProvider.php hinzu
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], 'App\Events\UserBrowse' => [ 'App\Listeners\CreateBrowseLog',// 用户访问记录 'App\Listeners\CreateUserIpLog',// 用户 IP 记录 ], ];
Nachdem das Hinzufügen abgeschlossen ist, führen Sie php artisan event:generate
aus, um die Datei app/Listeners/CreateUserIpLog.php
zu erstellen;
/** * Handle the event. * 记录用户 IP * @param UserBrowse $event * @return void */ public function handle(UserBrowse $event) { $redis = Redis::connection('cache'); $redisKey = 'user_ip:' . Carbon::today()->format('Y-m-d'); $isExists = $redis->exists($redisKey); $redis->sadd($redisKey, $event->ip_addr); if (!$isExists) { // key 不存在,说明是当天第一次存储,设置过期时间三天 $redis->expire($redisKey, 259200); } }
Statistischer Zugriff
Das obige wird Die IP des Benutzers wird aufgezeichnet und dann wird der statistische Code geschrieben
php artisan make:command CountIpDay
und eine neue app/Console/Commands/CountIpDay.php
Datei erstellen protected $signature = 'countIp:day';
und Beschreibung protected $description = '统计每日访问 IP';
handle
-Methode, oder Sie können die kernel.php
-Methode in emailOutputTo
verwenden, um E-Mails zu senden/** * Execute the console command. * * @return mixed */ public function handle() { $redis = Redis::connection('cache'); $yesterday = Carbon::yesterday()->format('Y-m-d'); $redisKey = 'user_ip:' . $yesterday; $data = $yesterday . ' 访问 IP 总数为 ' . $redis->scard($redisKey); // 发送邮件 Mail::to(env('ADMIN_EMAIL'))->send(new SendSystemInfo($data)); }
Aufgabe festlegen Planung
app/Console/Kernel.php
s $commands
/** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ \App\Console\Commands\CountIpDay::class, ];
schedule
-Methode mit der Ausführung fest vorerst jeden Tag um 1 Uhr morgens /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $schedule->command('countIp:day')->dailyAt('1:00'); }
artisan schedule:run
, wie folgt * * * * * /you_php you_path/artisan schedule:run >> /dev/null 2>&1
Das obige ist der detaillierte Inhalt vonEinführung in die Laravel-Aufgabenplanung (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!