Php 如何不停地拖延
但是,当调用方法T时,发生了程序阻塞。 我怎么能拖延而不结巴呢 我可以使用线程,但我使用API编写的代码不接受线程Php 如何不停地拖延,php,pocketmine,Php,Pocketmine,但是,当调用方法T时,发生了程序阻塞。 我怎么能拖延而不结巴呢 我可以使用线程,但我使用API编写的代码不接受线程 很抱歉英语不好,谢谢您必须为长时间运行的任务创建一个新的\pocketmine\Thread对象,如类文档中所述: 看起来API支持线程,所以请使用它们。我制作了一个库,明确允许您使用基于任务的类似睡眠的语法,使用PHP: 示例用法: 请注意,代码针对的是一个非常旧的API(3.0.0-ALPHA10),因此在使用之前必须对其进行更新。您对预期暂停的上下文和目的解释得太少了。一般来
很抱歉英语不好,谢谢您必须为长时间运行的任务创建一个新的
\pocketmine\Thread
对象,如类文档中所述:
看起来API支持线程,所以请使用它们。我制作了一个库,明确允许您使用基于任务的类似睡眠的语法,使用PHP: 示例用法:
请注意,代码针对的是一个非常旧的API(3.0.0-ALPHA10),因此在使用之前必须对其进行更新。您对预期暂停的上下文和目的解释得太少了。一般来说,您希望在客户端(JavaScript)而不是服务器端(PHP)引入人工延迟。我不确定您想做什么。如果你想等待,那就是等待。如果您不想等待,只需删除
sleep
命令即可。@mario它不是Web PHP,游戏的附加插件是用PHP编写的。@user202729我想等待而不使用它stucking@VerifySystemEmail为什么你想等待,但不想同时等待?你在说什么“游戏的附加插件”?你到底想干什么?你能用什么API?不。在AsyncTask中使用播放器类或服务器类时,发生了此错误BadMethodCallException:“无法序列化服务器实例”
@VerifySystemEmail请检查和/或如何在任务中使用Server
和Player
实例。@VerifySystemEmail API支持线程,它甚至定义了一个用于长时间运行任务的类(即\pocketmine\Thread
类)。但是,您不能在thread对象中保留服务器
实例的引用是一个完全不同的问题。我理解您所说的。但我想做的是使用Server和Player类,但不能在AsyncTask中使用,所以我说它不受支持。很好,所以我不能那样做。对吗?@VerifySystemEmail您可以使用服务器
和播放器
类,但是您不能将它们保存在新类的字段中,因为它们无法序列化(这是您的类所必需的)。您可能想向PocketMine的作者/社区询问关于PocketMine的更多问题,请访问。
<?php
namespace Test;
class A {
public function T(){
sleep(1000);
//Code not possible for thread to perform
}
}
?>
[...]
* 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.
[...]