У меня есть повторяющийся таск. В таске есть процесс которая получает данные с api. Однако пока api не вернет ответа, сервер зависате. Возможно ли сделать асинхронный таск в лайткор?
AsyncTask
Я в курсе про этот таск, но я не знаю как его использовать
Посмотри примеры в других плагинах
Я не нашел таких
Мне надо получать актуальный список игроков
Так тема вовсе не про это
Даже если я буду использовать это, асинхронность это не принесет
Вот код если что
<?php
namespace PlayersList;
use pocketmine\scheduler\Task;
use pocketmine\utils\Utils;
class UpdateTask extends Task {
public function __construct($plugin) {
$this->main = $plugin;
}
public function onRun($currentTick) {
$address = "test:19132";
$online = json_decode(Utils::getURL("https://api.mcsrvstat.us/bedrock/2/{$address}"), true);
$online = $online["online"] ? $online["players"]["list"] : null;
$this->main->list = $online;
}
}
Задержкп большая будет
<?php
namespace PlayersList;
use pocketmine\scheduler\AsyncTask;
use pocketmine\utils\Utils;
use pocketmine\Server;
class UpdateTask extends AsyncTask {
public function __construct($plugin) {
$this->main = $plugin;
}
public function onRun() {
$address = "test:19132";
$online = json_decode(Utils::getURL("https://api.mcsrvstat.us/bedrock/2/{$address}"), true);
$this->setResult($online["online"] ? $online["players"]["list"] : null);
}
public function onCompletion(Server $server){
$this->main->list = $this->getResult();
}
}
тупые это наоборот медленнее
запрос к сайту + пока сайт сделает квери + возврат ответа
мой плагин используй, тут ассинхронно
1 лайк
SlSlots
Спасибо
Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.