Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.

Сообщение Anonymous »

В настоящее время я разрабатываю свое личное приложение для частных серверов (например, серверов Minecraft), и поскольку запрос к серверу занимает некоторое время, я решил реализовать задания в очереди. Однако они не работают должным образом и запускаются сразу при вызове, хотя и с задержкой, вызывая огромную задержку при запросе страницы.

Вот index() моего HomeController. который вызывает задание на обновление каждого сервера с задержкой в ​​30 секунд:

Код: Выделить всё

public function index()
{
$servers = Server::all();

foreach($servers as $server)
{
// Job Dispatch
$job = (new UpdateServer($server->id))->delay(30);
$this->dispatch($job);
}
return view('serverlist.index', compact('servers'));
}
Класс заданий, обновляющих серверы, следующий:

Код: Выделить всё

class UpdateServer extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $id;

public function __construct($id)
{
$this->id = $id;
}

public function handle(){
$server = Server::findOrFail($this->id);

// Preparing the packet
$test = new RAGBuffer();
$test->addChar('255');
$test->addChar('1');
$test->addShort(1 | 8);

// Finding the server
$serverGame = new RAGServer($server->server_ip);

// Get server information
$status = $serverGame->sendPacket($test);

$server->onlinePlayers = $status->getOnline();
$server->peakPlayers = $status->getPeak();
$server->maxPlayers = $status->getMax();

if (!$server->save()) {
// Error occurred
}
}
}
Каждый раз при запуске index() HomeController происходит значительная задержка запроса страницы. Я следил за руководством на официальной веб-странице Laravel и пытался найти ответы, но ничего не нашел.

Итак, что я делаю не так? Почему задание не задерживается на 30 секунд, а затем не выполняется в фоновом режиме на моем сервере?

Кроме того: метод handle() делает то, что должен. Он запрашивает сервер, отправляет пакеты и обновляет мою базу данных правильной информацией.

Подробнее здесь: https://stackoverflow.com/questions/310 ... th-a-delay
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Задания в очереди Laravel обрабатываются немедленно, даже с задержкой.
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»