跳到主要内容

\Co\wait

API

namespace Co;

function tick(): void;

参数说明

返回值

概述

在声明一系列操作后,可以通过\Co\sleep函数来等待协程执行,否则程序将会直接结束, 又或者你可以通过 调用\Co\wait函数, ripple会开始执行所有事件, 直到空闲为止。

基础用法

\Co\defer(function () {
//TODO: do something
});

\Co\wait(); // 等待所有事件执行完成

扩展例子

在Laravel在CGI/FPM模式中中使用ripple只需要在结束时声明一个触发器即可

<?php

use Illuminate\HttCo\Request;

define('LARAVEL_START', microtime(true));

// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
require $maintenance;
}

// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';

\Co\async(function(){
// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../bootstrap/app.php')
->handleRequest(Request::capture());
});

\Co\wait();

注意事项

当注册的事件中存在信号处理器/流监听器时,如果没有解除信号处理器/流监听器, ripple会认为有未完成的事件,并将会一直等待,直到所有事件完成。