Рубрики
Uncategorized

Экземпляр очереди Laravel (1)

Автор оригинала: David Wong.

Представил

В предыдущих случаях записи событий/прослушивателей данные хранились напрямую, и этот шаг фактически можно было поместить в очередь для выполнения. В очереди laravel есть несколько драйверов на выбор, и здесь используется redis.

Создать очередь

  1. Используйте php artisan make:очередь журнала просмотра заданий Вы можете создать файл очереди и в конечном итоге сгенерировать его Jobs/BrowseLogQueue.php файл
  2. Функция-это просто хранилище данных, а код очень прост. Обратите внимание, что такие конфигурации, как максимальное количество сбоев, могут быть указаны в классе следующим образом
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:работа

Проблем с бегом нет, но это еще не конец. Вам нужно использовать хранителя процесса супервизора и продолжить работу со следующей статьей.

Ссылка: Очереди.