Вот 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
}
}
}
Итак, что я делаю не так? Почему задание не задерживается на 30 секунд, а затем не выполняется в фоновом режиме на моем сервере?
Кроме того: метод handle() делает то, что должен. Он запрашивает сервер, отправляет пакеты и обновляет мою базу данных правильной информацией.
Подробнее здесь: https://stackoverflow.com/questions/310 ... th-a-delay