# Как сделать асинхронность?

**URL:** <https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437>\
**Category:** Вопросы/Обсуждения\
**Created:** [30.Июль.2023 08:43:21 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437 "2023-07-30T08:43:21Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 08:43:22 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/1 "2023-07-30T08:43:22Z")

</div>

У меня есть повторяющийся таск. В таске есть процесс которая получает данные с api. Однако пока api не вернет ответа, сервер зависате. Возможно ли сделать асинхронный таск в лайткор?

---

<div class="post-metadata">

**Author:** ![Marusel](https://talk.24serv.pro/user_avatar/talk.24serv.pro/marusel/32/16416_2.png) [@Marusel](https://talk.24serv.pro/u/Marusel)\
**Post date:** [30.Июль.2023 09:14:54 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/2 "2023-07-30T09:14:54Z")

</div>

AsyncTask

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 09:35:54 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/5 "2023-07-30T09:35:54Z")

</div>

Я в курсе про этот таск, но я не знаю как его использовать

---

<div class="post-metadata">

**Author:** ![Marusel](https://talk.24serv.pro/user_avatar/talk.24serv.pro/marusel/32/16416_2.png) [@Marusel](https://talk.24serv.pro/u/Marusel)\
**Post date:** [30.Июль.2023 09:41:38 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/6 "2023-07-30T09:41:38Z")

</div>

Посмотри примеры в других плагинах

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 09:55:54 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/9 "2023-07-30T09:55:54Z")

</div>

Я не нашел таких

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 09:56:54 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/10 "2023-07-30T09:56:54Z")

</div>

[https://mcsrvstat.us/](https://mcsrvstat.us/)

Мне надо получать актуальный список игроков

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 10:00:53 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/12 "2023-07-30T10:00:53Z")

</div>

Так тема вовсе не про это

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 10:01:23 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/13 "2023-07-30T10:01:23Z")

</div>

Даже если я буду использовать это, асинхронность это не принесет

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 10:02:18 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/14 "2023-07-30T10:02:18Z")

</div>

Вот код если что

```auto
<?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;
    }
}

```

---

<div class="post-metadata">

**Author:** ![elizy](https://talk.24serv.pro/user_avatar/talk.24serv.pro/elizy/32/12731_2.png) [@elizy](https://talk.24serv.pro/u/elizy)\
**Post date:** [30.Июль.2023 10:53:53 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/15 "2023-07-30T10:53:53Z")

</div>

> [@MrAmit](#):
>
> ```auto
> $online = json_decode(Utils::getURL("https://api.mcsrvstat.us/bedrock/2/{$address}"), true);
> $online = $online["online"] ? $online["players"]["list"] : null;
> $this->main->list = $online;
> 
> ```

Задержкп большая будет

---

<div class="post-metadata">

**Author:** ![MrHoller](https://talk.24serv.pro/user_avatar/talk.24serv.pro/mrholler/32/17471_2.png) [@MrHoller](https://talk.24serv.pro/u/MrHoller)\
**Post date:** [30.Июль.2023 11:00:26 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/16 "2023-07-30T11:00:26Z")

</div>

```auto
<?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();
    }
}

```

---

<div class="post-metadata">

**Author:** ![Daddy](https://talk.24serv.pro/user_avatar/talk.24serv.pro/daddy/32/13503_2.png) [@Daddy](https://talk.24serv.pro/u/Daddy)\
**Post date:** [30.Июль.2023 11:01:11 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/17 "2023-07-30T11:01:11Z")

</div>

тупые это наоборот медленнее

---

<div class="post-metadata">

**Author:** ![Daddy](https://talk.24serv.pro/user_avatar/talk.24serv.pro/daddy/32/13503_2.png) [@Daddy](https://talk.24serv.pro/u/Daddy)\
**Post date:** [30.Июль.2023 11:01:37 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/18 "2023-07-30T11:01:37Z")

</div>

запрос к сайту + пока сайт сделает квери + возврат ответа

---

<div class="post-metadata">

**Author:** ![Daddy](https://talk.24serv.pro/user_avatar/talk.24serv.pro/daddy/32/13503_2.png) [@Daddy](https://talk.24serv.pro/u/Daddy)\
**Post date:** [30.Июль.2023 11:02:16 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/19 "2023-07-30T11:02:16Z")

</div>

> [@SLSlots – суммирование онлайна ваших серверов](https://talk.24serv.pro/t/slslots-summirovanie-onlajna-vashih-serverov/1649):
>
> Описание: плагин позволит суммировать онлайн со всех ваших серверов. Ядро: LiteCore (генезис не поддерживает) //возможно, в дальнейшем сделаю поддержку этого говна 
> 
> > **Инструкция**
> >
> > Загрузить плагин на свой сервер. Заполнить конфиг как в примере: timeout: 10 #таймаут обновления онлайна (не рекомендуется ставить меньше 5) servers: #список серверов (заполнять, как показано в примере) - 127.0.0.1:19132 - 127.0.0.1:19133 - 54.37.128.198:19132
> 
> > **Скачать**
> >
> > \<a class="attachment" href="/uploads/…

мой плагин используй, тут ассинхронно

---

<div class="post-metadata">

**Author:** ![Marusel](https://talk.24serv.pro/user_avatar/talk.24serv.pro/marusel/32/16416_2.png) [@Marusel](https://talk.24serv.pro/u/Marusel)\
**Post date:** [30.Июль.2023 11:05:14 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/20 "2023-07-30T11:05:14Z")

</div>

SlSlots

---

<div class="post-metadata">

**Author:** ![MrAmit](https://talk.24serv.pro/letter_avatar_proxy/v4/letter/m/a587f6/32.png) [@MrAmit](https://talk.24serv.pro/u/MrAmit)\
**Post date:** [30.Июль.2023 11:39:12 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/21 "2023-07-30T11:39:12Z")

</div>

Спасибо

---

<div class="post-metadata">

**Author:** ![system](https://cdn.talk.24serv.pro/original/1X/bb425d4ab69e4ca68522cbb69339288adf24cc14.png) [@system](https://talk.24serv.pro/u/system)\
**Post date:** [30.Июль.2023 23:39:46 UTC](https://talk.24serv.pro/t/kak-sdelat-asinhronnost/15437/22 "2023-07-30T23:39:46Z")

</div>

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.
