美文网首页
swoole Runtime的使用

swoole Runtime的使用

作者: 金星show | 来源:发表于2020-01-10 10:20 被阅读0次

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

    函数原型

    function Runtime::enableCoroutine(bool $enable = true, int $flags = SWOOLE_HOOK_ALL);
    function Runtime::enableCoroutine(int $flags = SWOOLE_HOOK_ALL);
    
    
    • $enable:打开或关闭协程
    • $flags:选择要Hook的类型,可以多选,默认为全选。仅在$enable = true时有效

    $flags参数在4.2或更高版本可用,请参考:开关选项
    4.3.2或更高版本中, 支持上述第二种原型所示的方式调用(即第一个参数为flag)

    可用列表

    • redis扩展
    • 使用mysqlnd模式的pdo_mysql、mysqli扩展,如果未启用mysqlnd将不支持协程化
    • soap扩展
    • file_get_contents、fopen
    • stream_socket_client (predis, php-amqplib)
    • stream_socket_server
    • stream_select (需要4.3.2以上版本)
    • fsockopen
    • proc_open (需要4.4.0以上版本)
    • sleep睡眠函数

    对应开关选项

    • 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_SLEEP:睡眠函数
    • SWOOLE_HOOK_FILE:文件操作
    • SWOOLE_HOOK_STREAM_SELECT: stream_select函数
    • SWOOLE_HOOK_BLOCKING_FUNCTION: 如gethostbyname等阻塞系统调用
    • SWOOLE_HOOK_ALL:打开所有类型 (不包括CURL)
    • SWOOLE_HOOK_CURL: 实验性选项, 默认不开启, 需配合与运算开启, 如SWOOLE_HOOK_ALL | SWOOLE_HOOK_CURL

    官方链接:
    https://wiki.swoole.com/wiki/page/p-runtime.html

    相关文章

      网友评论

          本文标题:swoole Runtime的使用

          本文链接:https://www.haomeiwen.com/subject/gtdpactx.html