Runtime::enableCoroutine

4.1.0版本中,底层增加一个新的特性,可以在运行时动态将基于php_stream实现的扩展、PHP网络客户端代码一键协程化。底层替换了ZendVM Stream的函数指针,所有使用php_stream进行socket操作均变成协程调度的异步IO

目前有PHP原生RedisPDOMySQLi协程化的支持。

4.1版本仅支持tcpunix两种stream类型
4.2版本增加了对udpudgunixssltls类型的支持

函数原型

function Runtime::enableCoroutine(bool $enable = true, int $flags = SWOOLE_HOOK_ALL);

$flags参数在4.2或更高版本可用,请参考:开关选项

可用列表

不可用列表

使用实例

Swoole\Runtime::enableCoroutine();

go(function () {
    $redis = new redis;
    $retval = $redis->connect("127.0.0.1", 6379);
    var_dump($retval, $redis->getLastError());
    var_dump($redis->get("key"));
    var_dump($redis->set("key", "value2"));
    var_dump($redis->get("key"));
    $redis->close();
});