函数名:Swoole\Coroutine::cli_wait()
适用版本:Swoole v4.3.0以上
函数用法: Swoole\Coroutine::cli_wait()函数是Swoole协程提供的一个阻塞函数,用于等待子进程的退出。当一个子进程退出时,该函数会返回子进程的进程号。
函数示例:
<?php
use Swoole\Coroutine;
go(function () {
$process = new Coroutine\Process(function () {
// 子进程逻辑
echo "子进程开始运行\n";
Coroutine::sleep(2); // 模拟子进程运行
echo "子进程运行结束\n";
});
$pid = $process->start();
echo "子进程的进程号:{$pid}\n";
// 等待子进程退出
$exitPid = Coroutine::cli_wait(); // 阻塞等待子进程退出
echo "子进程{$exitPid}退出\n";
});
在上面的示例中,我们创建了一个协程,并使用Swoole\Coroutine\Process类创建了一个子进程。子进程的逻辑是先打印一条消息,然后休眠2秒钟,最后再打印一条消息。在主进程中,我们通过调用Swoole\Coroutine::cli_wait()函数来等待子进程退出。当子进程退出时,该函数会返回子进程的进程号。我们在主进程中打印出子进程的进程号和退出的消息。
需要注意的是,Swoole\Coroutine::cli_wait()函数只能在协程环境中使用,不能在普通的PHP环境中使用。另外,该函数只能等待Swoole\Coroutine\Process创建的子进程退出,不能等待其他方式创建的子进程退出。