PHP Cli键事件侦听器函数


PHP Cli key event listener function

我正在制作php-cli应用程序,其中我需要密钥事件侦听器

假设这是我的代码任务完成

for($i=0;$i<=n;$i++){
    $message->send($user[$i]);
}

一旦我完成了发送消息,我将不得不用以下代码保持连接,以接收送达收据。

我使用$command = fopen ("php://stdin","r");来接收用户命令。

while(true){
    $connection->refresh();
}

在任何活动期间,连接都会自动保持活动状态,但在空闲时,我必须保持以上循环运行。

我如何在按下任何会使该事件中断并执行某些功能的键时运行该事件?

PHP不是用来处理这类问题的。神奇的单词将是Thread

我可以想象,最干净的方法是查看扩展PThreads。有了它,你可以像在其他语言中一样执行线程:

class AsyncOperation extends Thread {
  public function __construct($arg){
    $this->arg = $arg;
  }
  public function run(){
    if($this->arg){
      printf("Hello %s'n", $this->arg);
    }
  }
}
$thread = new AsyncOperation("World");
if($thread->start())
  $thread->join();

另一种方法是通过不同脚本中的队列执行任务。有一些队列服务器,但它可以通过PHP.exe简单地调用shell_execute队列脚本来完成。在Linux上,你需要像...script.php > /dev/null 2>/dev/null &、Windows start /B php...这样的东西来停止等待脚本完成。