Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Помещение запроса в очередь и отправка ответа из очереди » 30.06.2018 09:47:36

Со стороны это и правда выглядит странно.
Спасибо за направления, в которых можно двигаться к решению данной задачи!!!

#2 Re: Laravel 5.x » Помещение запроса в очередь и отправка ответа из очереди » 29.06.2018 20:41:27

Жаль, что так.
У меня была мысль, что получится передать объект запроса в воркер, а из воркера в контроллер. Что-то на подобии как происходит в Middleware. Там ведь тоже объект запроса из Middleware передаётся в контроллер или callback.
Есть уверенность, что как-то разработчики такую задачу решают, но вот как...?

#3 Laravel 5.x » Помещение запроса в очередь и отправка ответа из очереди » 16.06.2018 18:57:59

Demianomen
Ответов: 4

Здравствуйте, дорогие ларавельчане!
Дошло дело в проекте до использования механизма очередей. И, в принципе, там всё понятно, кроме одного момента.
Имеется API на который шлёт запросы сторонний сервис и получает в ответ JSON. На данный момент, без очередей, всё работает как надо, без сюрпризов. Но, поступила задача "пропускать" эти запросы через очередь, чтобы предотвратить лежачее положение сервера в особо "жаркие" моменты. К сожалению, решения данной задачи пока найти не удалось.
Была попытка передачи инстанса Illuminate\Http\Request в воркер, но фреймворк ругается но невозможность сериализации замыкания.

Route::get('getjson', function (\Illuminate\Http\Request $request){
    $job = (new GetJSONJob($request))->onConnection('redis');
    dispatch($job);
});

Воркер

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

    protected $request;

    /**
     * Create a new job instance.
     *
     * @param \Illuminate\Http\Request $request
     * @return void
     */
    public function __construct(\Illuminate\Http\Request $request)
    {
        $this->request = $request;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        return redirect()->action('CommonAPIController@getJSON', $this->request);
    }
}

Надеюсь, что вы мне поможете. Заранее благодарю!

Подвал раздела