\

Classes

swoole_buffer class swoole_buffer
swoole_client class swoole_client
swoole_connpool class swoole_connpool
swoole_http_client class swoole_http_client
swoole_http_request class swoole_http_request
swoole_http_response class swoole_http_response
swoole_http_server class swoole_http_server extends swoole_server 继承自 swoole_server 类
swoole_mysql class swoole_mysql
swoole_process class swoole_process 进程管理模块,用来替代 PHP 的 pcntl 扩展
swoole_redis class swoole_redis
swoole_server class swoole_server
swoole_server_port class swoole_server_port
swoole_timer class swoole_timer 使用方法和 swoole_timer_tick、swoole_timer_after、swoole_timer_clear、swoole_timer_exist 相同
swoole_websocket_server class swoole_websocket_server extends swoole_http_server 继承自 swoole_http_server 类

Constants

SWOOLE_AIO_BASE

SWOOLE_AIO_BASE

基于线程池模拟实现,文件读写请求投递到任务队列,然后由AIO线程读写文件,完成后通知主线程。 AIO线程本身是同步阻塞的。所以并非真正的异步IO。

SWOOLE_AIO_LINUX

SWOOLE_AIO_LINUX

基于Linux Native AIO系统调用,是真正的异步IO,并非阻塞模拟。

SWOOLE_ASYNC_CONNECT_TIMEOUT

SWOOLE_ASYNC_CONNECT_TIMEOUT

异步客户端超时事件类型 连接超时

SWOOLE_ASYNC_RECV_TIMEOUT

SWOOLE_ASYNC_RECV_TIMEOUT

异步客户端超时事件类型 消息接收超时

SWOOLE_BASE

SWOOLE_BASE

swoole_server 构造函数参数,Server 运行模式,BASE模式,业务代码在reactor进程中执行

SWOOLE_DTLSv1_CLIENT_METHOD

SWOOLE_DTLSv1_CLIENT_METHOD

SSL 加密方法

SWOOLE_DTLSv1_METHOD

SWOOLE_DTLSv1_METHOD

SSL 加密方法

SWOOLE_DTLSv1_SERVER_METHOD

SWOOLE_DTLSv1_SERVER_METHOD

SSL 加密方法

SWOOLE_EVENT_READ

SWOOLE_EVENT_READ

swoole_event_add 函数参数,读事件类型掩码

SWOOLE_EVENT_WRITE

SWOOLE_EVENT_WRITE

swoole_event_add 函数参数,写事件类型掩码

SWOOLE_IPC_MSGQUEUE

SWOOLE_IPC_MSGQUEUE

worker 和 task 进程间通信方式, 使用消息队列通信

SWOOLE_IPC_UNSOCK

SWOOLE_IPC_UNSOCK

worker 和 task 进程间通信方式, unix socket 模式,默认模式

SWOOLE_PACKET

SWOOLE_PACKET

标志位,用于支持 TCP 透传模式

SWOOLE_PROCESS

SWOOLE_PROCESS

swoole_server 构造函数参数,Server 运行模式为进程模式,业务代码在Worker进程中执行

SWOOLE_SOCK_ASYNC

SWOOLE_SOCK_ASYNC

swoole_client构造函数参数,异步客户端

SWOOLE_SOCK_SYNC

SWOOLE_SOCK_SYNC

swoole_client构造函数参数,同步客户端

SWOOLE_SOCK_TCP

SWOOLE_SOCK_TCP

socket 类型,tcp ipv4 socket,同 SWOOLE_TCP

SWOOLE_SOCK_TCP6

SWOOLE_SOCK_TCP6

socket 类型,tcp ipv6 socket,同 SWOOLE_TCP6

SWOOLE_SOCK_UDP

SWOOLE_SOCK_UDP

socket 类型,udp ipv4 socket,同 SWOOLE_UDP

SWOOLE_SOCK_UDP6

SWOOLE_SOCK_UDP6

socket 类型,udp ipv6 socket。同 SWOOLE_UDP6

SWOOLE_SOCK_UNIX_DGRAM

SWOOLE_SOCK_UNIX_DGRAM

socket 类型,unix socket dgram,同SWOOLE_UNIX_DGRAM

SWOOLE_SOCK_UNIX_STREAM

SWOOLE_SOCK_UNIX_STREAM

socket 类型,unix socket stream,同 SWOOLE_UNIX_STREAM

SWOOLE_SSL

SWOOLE_SSL

SSL 加密方法

SWOOLE_SSLv23_CLIENT_METHOD

SWOOLE_SSLv23_CLIENT_METHOD

SSL 加密方法

SWOOLE_SSLv23_METHOD

SWOOLE_SSLv23_METHOD

SSL 加密方法,默认加密方法

SWOOLE_SSLv23_SERVER_METHOD

SWOOLE_SSLv23_SERVER_METHOD

SSL 加密方法

SWOOLE_SSLv3_CLIENT_METHOD

SWOOLE_SSLv3_CLIENT_METHOD

SSL 加密方法

SWOOLE_SSLv3_METHOD

SWOOLE_SSLv3_METHOD

SSL 加密方法

SWOOLE_SSLv3_SERVER_METHOD

SWOOLE_SSLv3_SERVER_METHOD

SSL 加密方法

SWOOLE_TCP

SWOOLE_TCP

socket 类型,tcp ipv4 socket,同 SWOOLE_SOCK_TCP

SWOOLE_TCP6

SWOOLE_TCP6

socket 类型,tcp ipv6 socket,同 SWOOLE_SOCK_TCP6

SWOOLE_TLSv1_1_CLIENT_METHOD

SWOOLE_TLSv1_1_CLIENT_METHOD

SSL 加密方法

SWOOLE_TLSv1_1_METHOD

SWOOLE_TLSv1_1_METHOD

SSL 加密方法

SWOOLE_TLSv1_1_SERVER_METHOD

SWOOLE_TLSv1_1_SERVER_METHOD

SSL 加密方法

SWOOLE_TLSv1_2_CLIENT_METHOD

SWOOLE_TLSv1_2_CLIENT_METHOD

SSL 加密方法

SWOOLE_TLSv1_2_METHOD

SWOOLE_TLSv1_2_METHOD

SWOOLE_TLSv1_2_SERVER_METHOD

SWOOLE_TLSv1_2_SERVER_METHOD

SSL 加密方法

SWOOLE_TLSv1_CLIENT_METHOD

SWOOLE_TLSv1_CLIENT_METHOD

SSL 加密方法

SWOOLE_TLSv1_METHOD

SWOOLE_TLSv1_METHOD

SSL 加密方法

SWOOLE_TLSv1_SERVER_METHOD

SWOOLE_TLSv1_SERVER_METHOD

SSL 加密方法

SWOOLE_UDP

SWOOLE_UDP

socket 类型,udp ipv4 socket,同 SWOOLE_SOCK_UDP

SWOOLE_UDP6

SWOOLE_UDP6

socket 类型,udp ipv6 socket,同 SWOOLE_SOCK_UDP6

SWOOLE_UNIX_DGRAM

SWOOLE_UNIX_DGRAM

socket 类型,unix socket dgram,同 SWOOLE_SOCK_UNIX_DGRAM

SWOOLE_UNIX_STREAM

SWOOLE_UNIX_STREAM

socket 类型,unix socket stream,同 SWOOLE_SOCK_UNIX_STREAM

SWOOLE_VERSION

SWOOLE_VERSION

当前 swoole 版本号,字符串类型,如 3.1.0

WEBSOCKET_OPCODE_BINARY

WEBSOCKET_OPCODE_BINARY

websocket 数据帧类型,二进制类型

WEBSOCKET_OPCODE_TEXT

WEBSOCKET_OPCODE_TEXT

websocket 数据帧类型,UTF-8 文本字符数据

WEBSOCKET_STATUS_ACTIVE

WEBSOCKET_STATUS_ACTIVE

websocket 连接状态,已握手成功等待浏览器发送数据帧,同 WEBSOCKET_STATUS_FRAME

WEBSOCKET_STATUS_CONNECTION

WEBSOCKET_STATUS_CONNECTION

websocket 连接状态,连接进入等待握手

WEBSOCKET_STATUS_FRAME

WEBSOCKET_STATUS_FRAME

websocket 连接状态,已握手成功等待浏览器发送数据帧,同 WEBSOCKET_STATUS_ACTIVE

WEBSOCKET_STATUS_HANDSHAKE

WEBSOCKET_STATUS_HANDSHAKE

websocket 连接状态,正在握手

Functions

is_nova_packet()

is_nova_packet(string  $data) : boolean

判断一个二进制包是否是 nova 包

Parameters

string $data

Returns

boolean —

成功返回 true,失败返回 false

nova_decode()

nova_decode(string  $buf, \&string  $service_name, \&string  $method_name, \&string  $ip, \&int  $port, \&int  $seq_no, \&string  $attach, \&string  $data) : boolean

nova协议解包

Parameters

string $buf

二进制字符串

\&string $service_name

服务名

\&string $method_name

方法名

\&string $ip
\&int $port
\&int $seq_no
\&string $attach

附加字段 通常为json编码字符串

\&string $data

nova body

Returns

boolean —

成功返回 true,失败返回 false

nova_encode()

nova_encode(string  $service_name, string  $method_name, string  $ip, integer  $port, integer  $seq_no, string  $attach, string  $data, \&string  $buf) : boolean

nova协议解包

Parameters

string $service_name
string $method_name
string $ip
integer $port
integer $seq_no
string $attach

附加字段 通常为json编码字符串

string $data

协议body

\&string $buf

打包结果

Returns

boolean —

成功返回 true,失败返回 false

nova_get_ip()

nova_get_ip() : string

获取本机 ip 地址,非 127.0.0.1 的第一个 ip 地址

Returns

string —

成功返回第一个非local ip地址,失败返回空字符串

nova_get_sequence()

nova_get_sequence() : integer

获取一个自增的序列号 id

Returns

integer

nova_get_time()

nova_get_time() : integer

获取事件循环的时间戳

Returns

integer —

unix 时间戳

swoole_async_dns_lookup()

swoole_async_dns_lookup(string  $domain_name, callable  $callback) : false|void

将域名解析为IP地址。调用此函数是非阻塞的,调用会立即返回。将向下执行后面的代码。

Parameters

string $domain_name

域名

callable $callback

查询成功后回调的函数

Returns

false|void —

参数错误返回 false,否则进行域名查询

swoole_async_read()

swoole_async_read(string  $filename, string  $callback, integer  $chunk_size = -1, integer  $offset) : boolean

异步读取文件数据

若读取数据较大,则回多次回调用户;最后一次回调数据长度为0,表示读取结束

Parameters

string $filename

文件名

string $callback

回调函数

integer $chunk_size

[optional] 读取数据的长度,默认-1:读取整个文件.

integer $offset

[optional] 文件起始偏移量,从文件偏移开始读取,默认为0

Returns

boolean —

成功返回 true,失败返回 false

swoole_async_set()

swoole_async_set(array  $settings) : void

设置异步IO操作配置

Parameters

array $settings
 thread_num 设置异步文件IO线程的数量
 aio_mode 设置异步文件IO的操作模式,
          目前支持SWOOLE_AIO_BASE(使用类似于Node.js的线程池同步阻塞模拟异步)、
          SWOOLE_AIO_LINUX(Linux Native AIO) 2种模式
 enable_signalfd 开启和关闭signalfd特性的使用
 socket_buffer_size 设置SOCKET内存缓存区尺寸
 socket_dontwait 在内存缓存区已满的情况下禁止底层阻塞等待
 补充选项:“aio_max_buffer” => 1*1024*1024,设置aio最大buf

swoole_async_write()

swoole_async_write(string  $filename, string  $content, integer  $offset = -1, callable  $callback = null) : boolean

异步写文件

若需要写入的数据大,可分批写入,用户需要设置好每次写入文件的偏移,避免分批写入出现乱序

Parameters

string $filename

文件名

string $content

待写入文件的数据,数据长度不大于buf_max_len,@swoole_async_set aio_max_buffer选项

integer $offset

[optional] 写入数据的相对文件起始的偏移量

callable $callback

[optional] 结果回调

Returns

boolean —

成功返回 true,失败返回 false

swoole_clean_dns_cache()

swoole_clean_dns_cache() : void

清除swoole内置的DNS缓存,对swoole_client和swoole_async_dns_lookup 有效。

swoole_client_select()

swoole_client_select(\&array  $read_array, \&array  $write_array, \&array  $error_array, float  $timeout = 0.5) : integer|false

获取可读/可写/错误文件描述符的列表

Parameters

\&array $read_array

可读文件描述符数组的引用

\&array $write_array

可写文件描述符数组的引用

\&array $error_array

错误文件描述符数组的引用

float $timeout

[optional] 超时时间,单位为秒,可以是浮点数

Returns

integer|false —

成功返回事件的数量,失败返回false

swoole_cpu_num()

swoole_cpu_num() : integer

swoole_cpu_num 获取当前服务器 cpu 的核心数

Returns

integer —

返回当前服务器 cpu 的核心数

swoole_errno()

swoole_errno() : integer

获取最近一次系统调用的错误码,错误码的值与操作系统有关。可是使用swoole_strerror将错误转换为错误信息。

Returns

integer —

返回errno的值

swoole_event_add()

swoole_event_add(integer  $fd, callable  $read_callback, callable  $write_callback = null, integer  $event_flag = null) : boolean

Swoole扩展还提供了直接操作底层epoll/kqueue事件循环的接口。可将其他扩展创建的socket,PHP代码中stream/socket扩展创建的socket等加入到Swoole的EventLoop中。 用于将一个socket加入到swoole的reactor事件监听中,此函数可以用在Server或Client模式下

Parameters

integer $fd

就是文件描述符,包括swoole_client的socket,以及第三方扩展的socket(比如mysql) stream资源,就是stream_socket_client/fsockopen 创建的资源 sockets资源,就是sockets扩展中 socket_create创建的资源,需要在编译时加入 ./configure --enable-sockets

callable $read_callback

可读事件回调函数

callable $write_callback

[optional] 可写事件回调函数

integer $event_flag

[optional] 事件类型掩码,可选择关闭/开启可读可写事件, 如 SWOOLE_EVENT_READ,SWOOLE_EVENT_WRITE,或者SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE

Returns

boolean —

成功返回 true,失败返回 false

swoole_event_defer()

swoole_event_defer(callable  $callback) : void

在当前EventLoop的事件循环结束、下一次事件循环启动时响应,$callback 函数不接受任何参数

Parameters

callable $callback

时间到期后执行的函数,必须是可调用的,不接受任何参数

swoole_event_del()

swoole_event_del(  $fd) : void

用于从reactor中移除监听的socket。swoole_event_del应当与swoole_event_add成对使用。

Parameters

$fd

swoole_event_exit()

swoole_event_exit() : void

退出事件轮询,此函数仅在Client程序中有效。

swoole_event_set()

swoole_event_set(integer  $fd, callable  $read = null, callable  $write = null, integer  $events = null) : boolean

修改事件监听的回调函数和掩码,参数同 swoole_event_add

Parameters

integer $fd

文件描述符,同 swoole_event_add

callable $read

[optional] 修改可读事件回调为指定函数

callable $write

[optional] 修改可写事件回调为指定函数

integer $events

[optional] 可关闭/开启,可写(SWOOLE_EVENT_READ)和可读(SWOOLE_EVENT_WRITE)事件的监听

Returns

boolean —

成功返回true,失败返回 false

swoole_event_wait()

swoole_event_wait() : void

PHP5.4之前的版本没有在ZendAPI中加入注册shutdown函数。所以swoole无法在脚本结尾处自动进行事件轮询。 所以低于5.4的版本,需要在你的PHP脚本结尾处加swoole_event_wait函数。使脚本开始进行事件轮询。

swoole_event_write()

swoole_event_write(integer  $fd, mixed  $data) : boolean

用于PHP自带stream/sockets扩展创建的socket,使用fwrite/socket_send等函数向对端发送数据。

Parameters

integer $fd

文件句柄,同 swoole_event_add

mixed $data

要发送的数据

Returns

boolean —

成功返回 true,失败返回 false

swoole_set_process_name()

swoole_set_process_name(string  $process_name) : void

设置进程的名称,修改进程名后,ps看到的将是设定的字符串,函数功能同php中的 cli_set_process_title

Parameters

string $process_name

指定进程的名称

在 onStart 回调中执行此函数,将修改主进程的名称。
在 onWorkerStart 中调用将修改 worker 子进程的名称。

如何为Swoole Server重命名各个进程名称
 在swoole_server_create之前修改为manager进程名称
 onStart调用时修改为主进程名称
 onWorkerStart修改为worker进程名称

swoole_strerror()

swoole_strerror(integer  $errno) : string

将标准的Unix Errno 错误码转换字符串表示的错误信息

Parameters

integer $errno

Returns

string —

可读的错误信息

swoole_timer_after()

swoole_timer_after(integer  $ms, callable  $callback, mixed  $param = null) : integer|boolean

在指定的时间 $ms 后执行函数 $callback,执行完后定时器就会销毁,非阻塞。

Parameters

integer $ms

指定时间,单位毫秒

callable $callback

回调函数

mixed $param

[optional] 用户参数,该参数被传递给 $callback 中,如果有多个参数可以使用数组形式

Returns

integer|boolean —

成功返回定时器 id,失败返回false

swoole_timer_clear()

swoole_timer_clear(integer  $timer_id) : boolean

清除本当前进程中 $timer_id 标识的定时器

Parameters

integer $timer_id

定时器标识

Returns

boolean —

成功返回true,失败返回 false

swoole_timer_exists()

swoole_timer_exists(integer  $timer_id) : boolean

判断 $time_id 标识的定时器是否存在

Parameters

integer $timer_id

定时器 id

Returns

boolean —

定时器 $timer_id 存在返回 true,不存在返回 false

swoole_timer_set()

swoole_timer_set(array  $settings) : void

set 时间轮实现的定时器参数设置,设置后,在当前进程中全局生效

Parameters

array $settings

数组,设置时间轮参数

swoole_timer::set(
 array(
     'use_time_wheel' => 1,        //是否启用时间轮,默认启用,启用后的定时器内部使用时间轮实现
     'time_wheel_precision' => 10, //定时器精度,单位毫秒,默认为 100ms,最小值为 10 ms
 ));

swoole_timer_tick()

swoole_timer_tick(integer  $ms, callable  $callback, mixed  $param = null) : integer|boolean

设置一个间隔时钟定时器,与after定时器不同的是tick定时器会持续触发,直到调用swoole_timer_clear清除。

Parameters

integer $ms

指定时间,单位毫秒

callable $callback

时间到期后执行的函数,必须是可调用的

mixed $param

[optional] 用户参数,该参数被传递给 $callback 中,如果有多个参数可以使用数组形式

Returns

integer|boolean —

成功返回定时器 time_id,失败返回 false

swoole_version()

swoole_version() : string

获取当前 swoole 扩展的版本号,如 3.1.0

Returns

string —

返回当前 swoole 扩展的版本号