Как отсрочить без остановки

<?php

namespace Test;

class A {

public function T(){
sleep(1000);
//Code not possible for thread to perform
}


}
?>

Но, когда вызывается метод T, происходит зависание программы.
как я могу задержать без застревания?

я могу использовать поток, но код, который я написал с использованием API, не принимает поток.

извините за плохой английский и спасибо

-2

Решение

Вы должны создать новый \pocketmine\Thread объект для долгосрочной задачи, как указано в документации AsyncTask учебный класс:

 [...]
* An AsyncTask does not have its own thread. It is queued into an AsyncPool and executed if there is an async worker
* with no AsyncTask running. Therefore, an AsyncTask SHOULD NOT execute for more than a few seconds. For tasks that
* run for a long time or infinitely, start another {@link \pocketmine\Thread} instead.
[...]

Похоже, что потоки поддержки API, так что используйте их.

0

Другие решения

Я сделал библиотеку, которая явно позволяет вам использовать похожий на сон синтаксис на основе задач, используя PHP генераторы: https://github.com/SOF3/pmutil/blob/master/src/sofe/pmutil/SleepyTask.php

Пример использования: https://gist.github.com/SOF3/36813c09f086de7307dd9dab908f4aa4

Обратите внимание, что код нацелен на действительно старый API (3.0.0-ALPHA10), поэтому вы должны обновить его перед использованием.

0

По вопросам рекламы [email protected]