Представил
В предыдущих случаях записи событий/прослушивателей данные хранились напрямую, и этот шаг фактически можно было поместить в очередь для выполнения. В очереди laravel есть несколько драйверов на выбор, и здесь используется redis.
Создать очередь
- Используйте
php
artisan make:очередь журнала просмотра заданий
Вы можете создать файл очереди и в конечном итоге сгенерировать егоJobs/BrowseLogQueue.php
файл - Функция-это просто хранилище данных, а код очень прост. Обратите внимание, что такие конфигурации, как максимальное количество сбоев, могут быть указаны в классе следующим образом
ip_addr = $ip_addr; $this->request_url = $request_url; $this->city_name = $city_name; $this->created_at = $now; $this->updated_at = $now; } /** * Execute the job. * * @return void */ public function handle(BrowseLog $browseLog) { $log = new $browseLog; $log->ip_addr = $this->ip_addr; $log->request_url = $this->request_url; $log->city_name = $this->city_name; $log->created_at = $this->created_at; $log->updated_at = $this->updated_at; $log->save(); } /** * Mission failure * @param Exception $exception */ public function failed(Exception $exception) { // Send an email to inform the administrator event(new NotifyAdmin($exception->getMessage())); } }
Задача распространения
Монитор CreateBrowseLog.php
В документ были внесены следующие поправки
/** * Handle the event. * * @param UserBrowse $event * @return void */ public function handle(UserBrowse $event) { // Local access is not recorded $arr = ['127.0.0.1']; if (!in_array($event->ip_addr, $arr)) { /*$log = new \App\Models\BrowseLog(); $log->ip_addr = $event->ip_addr; $log->request_url = $event->request_url; $log->city_name = $event->city_name; $log->save();*/ BrowseLogQueue::dispatch($event->ip_addr, $event->request_url, $event->city_name, now()); /* BrowseLogQueue:: dispatch ($event - > ip_addr, $event - > request_url, $event - > city_name) - > delay (now () - > addMinute (1)); delayed addition */ } }
Очередь запуска
Последний шаг-запустить очередь и выполнить ее. очередь мастеров php:работа
Проблем с бегом нет, но это еще не конец. Вам нужно использовать хранителя процесса супервизора и продолжить работу со следующей статьей.
Ссылка: Очереди.