开关选项
最后更新于:2022-04-02 06:30:48
# 开关选项
[TOC]
在`4.2`版本中,`Runtime::enableCoroutine`增加了第二个参数,可以设置开关选项,选择要`Hook`哪些`PHP`函数。
## 支持的选项
* `SWOOLE_HOOK_SLEEP`:睡眠函数
* `SWOOLE_HOOK_FILE`:文件操作`stream`
* `SWOOLE_HOOK_TCP`:`TCP Socket`类型的`stream`
* `SWOOLE_HOOK_UDP`:`UDP Socket`类型的`stream`
* `SWOOLE_HOOK_UNIX`:`Unix Stream Socket`类型的`stream`
* `SWOOLE_HOOK_UDG`:`Unix Dgram Socket`类型的`stream`
* `SWOOLE_HOOK_SSL`:`SSL Socket`类型的`stream`
* `SWOOLE_HOOK_TLS`:`TLS Socket`类型的`stream`
* `SWOOLE_HOOK_ALL`:打开所有类型
## 使用实例
~~~
Swoole\Runtime::enableCoroutine(true, SWOOLE_HOOK_SLEEP);
go(function () {
sleep(1);
//注意仅 hook 了睡眠函数,下面的文件操作函数会导致阻塞
$fp = fopen("test.log", "a+");
fwrite($fp, str_repeat('A', 2048);
fwrite($fp, str_repeat('B', 2048);
fclose();
});
~~~
## 关闭协程
调用`Runtime::enableCoroutine(false)`关闭上一次设置的所有选项协程`Hook`设置。
注意关闭操作不接受第二个参数,底层会判断上一次打开时设置的选项列表,关闭对应的协程`Hook`设置。
';