• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swoole server函数列表

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

swoole_server函数列表

Table of Contents


swoole_server::__construct

功能描述:创建一个swoole_server资源对象
函数原型

// 类成员函数
public function swoole_server::__construct(string $host, int $port, int $mode = SWOOLE_PROCESS,
    int $sock_type = SWOOLE_SOCK_TCP);
// 公共函数
function swoole_server_create(string $host, int $port, int $mode = SWOOLE_PROCESS,
    int $sock_type = SWOOLE_SOCK_TCP);

返回:一个swoole_server对象
参数说明

参数说明
string host监听的IP地址
int port监听的端口号
int mode运行模式
int sock_type指定的socket类型

说明: host、port、socket_type的详细说明见swoole_server::addlistener
mode指定了swoole_server的运行模式,共有如下三种:

mode类型说明
SWOOLE_BASEBase模式传统的异步非阻塞Server。在Reactor内直接回调PHP的函数。如果回调函数中有阻塞操作会导致Server退化为同步模式。worker_num参数对与BASE模式仍然有效,swoole会启动多个Reactor进程
SWOOLE_THREAD线程模式(已废弃)多线程Worker模式,Reactor线程来处理网络事件轮询,读取数据。得到的请求交给Worker线程去处理。多线程模式比进程模式轻量一些,而且线程之间可以共享堆栈和资源。 访问共享内存时会有同步问题,需要使用Swoole提供的锁机制来保护数据。
SWOOLE_PROCESS进程模式(默认)Swoole提供了完善的进程管理、内存保护机制。 在业务逻辑非常复杂的情况下,也可以长期稳定运行,适合业务逻辑非常复杂的场景。

样例:

$serv = new swoole_server("127.0.0.1" , 8888 , SWOOLE_PROCESS , SWOOLE_SOCK_TCP);

swoole_server::set

功能描述:设置swoole_server运行时的各项参数
函数原型

// 类成员函数
public function swoole_server::set(array $setting);
// 公共函数
function swoole_server_set(swoole_server $server, array $setting);

返回:无
参数说明

参数说明
array setting配置选项数组,采用key-value形式

说明
该函数必须在swoole_server::start函数调用前调用。
全部swoole_server的配置参数点此查看
样例:

$serv->set(
    array(
        'worker_num' => 8,
        'max_request' => 10000,
        'max_conn' => 100000,
        'dispatch_mode' => 2,
        'debug_mode'=> 1
        'daemonize' => false,
    )
);

swoole_server::on

功能描述:绑定swoole_server的相关回调函数
函数原型

// 类成员函数
public function bool swoole_server->on(string $event, mixed $callback);

返回:设置成功返回true,否则返回false
参数说明

参数说明
string event回调的名称(大小写不敏感)
mixed callback回调的PHP函数,可以是函数名的字符串,类静态方法,对象方法数组,匿名函数

说明
该函数必须在swoole_server::start函数调用前调用。
此方法与swoole_server::handler功能相同,作用是与swoole_client风格保持一致。
swoole_server::on中事件名称字符串不要加on。
全部的回调函数列表点此查看
样例:

$serv->on('connect', function ($serv, $fd){
    echo "Client:Connect.\n";
});
$serv->on('receive', array( $myclass, 'onReceive' ) ); // onReceive是myclass的成员函数

swoole_server::addlistener

功能描述:给swoole_server增加一个监听的地址和端口
函数原型

// 类成员函数
public function swoole_server::addlistener(string $host, int $port, $type = SWOOLE_SOCK_TCP);
// 公共函数
function swoole_server_addlisten(swoole_server $serv, string $host, int $port, $type = SWOOLE_SOCK_TCP);

返回:无
参数说明

参数说明
string host监听的IP地址
int port监听的端口号
int sock_type指定的socket类型

说明: swoole支持如下socket类型:

sock_type说明
SWOOLE_TCP/SWOOLE_SOCK_TCPTCP IPv4 Socket
SWOOLE_TCP6/SWOOLE_SOCK_TCP6TCP IPv6 Socket
SWOOLE_UDP/SWOOLE_SOCK_UDPUDP IPv4 Socket
SWOOLE_UDP6/SWOOLE_SOCK_UDP6UDP IPv4 Socket
SWOOLE_UNIX_DGRAMUnix UDP Socket
SWOOLE_UNIX_STREAMUnix TCP Socket

Unix Socket仅在1.7.1+后可用,此模式下host参数必须填写可访问的文件路径,port参数忽略
Unix Socket模式下,客户端fd将不再是数字,而是一个文件路径的字符串
SWOOLE_TCP等是1.7.0+后提供的简写方式,与1.7.0前的SWOOLE_SOCK_TCP是等同的

样例:

$serv->addlistener("127.0.0.1", 9502, SWOOLE_SOCK_TCP);
$serv->addlistener("192.168.1.100", 9503, SWOOLE_SOCK_TCP);
$serv->addlistener("0.0.0.0", 9504, SWOOLE_SOCK_UDP);
$serv->addlistener("/var/run/myserv.sock", 0, SWOOLE_UNIX_STREAM);

swoole_server_addlisten($serv, "127.0.0.1", 9502, SWOOLE_SOCK_TCP);

swoole_server::handler

功能描述:设置Server的事件回调函数
函数原型

// 类成员函数
public function swoole_server::handler(string $event_name, mixed $event_callback_function);
// 公共函数
function swoole_server_handler(swoole_server $serv, string $event_name, mixed $event_callback_function);

返回:设置成功返回true,否则返回false
参数说明

参数说明
string event_name回调的名称(大小写不敏感)
mixed event_callback_function回调的PHP函数,可以是函数名的字符串,类静态方法,对象方法数组,匿名函数

说明: 该函数必须在swoole_server::start函数调用前调用。
事件名称字符串要加on。
全部的回调函数列表点此查看

onConnect/onClose/onReceive这3个回调函数必须设置。其他事件回调函数可选
如果设定了timer定时器,onTimer事件回调函数也必须设置
如果启用了task_worker,onTask/onFinish事件回调函数必须设置

样例:

$serv->handler('onStart', 'my_onStart');
$serv->handler('onStart', array($this, 'my_onStart'));
$serv->handler('onStart', 'myClass::onStart');

swoole_server::start

功能描述:启动server,开始监听所有TCP/UDP端口
函数原型

// 类成员函数
public function swoole_server::start()

返回:启动成功返回true,否则返回false
参数说明:无
说明
启动成功后会创建worker_num+2个进程:Master进程+Manager进程+worker_num 个 Worker进程。
另外。启用task_worker会增加task_worker_num个Worker进程
三种进程的说明如下:

进程类型说明
Master进程主进程内有多个Reactor线程,基于epoll/kqueue进行网络事件轮询。收到数据后转发到Worker进程去处理
Manager进程对所有Worker进程进行管理,Worker进程生命周期结束或者发生异常时自动回收,并创建新的Worker进程
Worker进程对收到的数据进行处理,包括协议解析和响应请求

样例:

$serv->start();

swoole_server::reload

功能描述:重启所有worker进程。
函数原型

// 类成员函数
public function swoole_server::reload()

返回:调用成功返回true,否则返回false
参数说明:无
说明
调用后会向Manager发送一个SIGUSR1信号,平滑重启全部的Worker进程(所谓平滑重启,是指重启动作会在Worker处理完正在执行的任务后发生,并不会中断正在运行的任务。)

小技巧:在onWorkerStart回调中require相应的php文件,当这些文件被修改后,只需要通过SIGUSR1信号即可实现服务器热更新。

1.7.7版本增加了仅重启task_worker的功能。只需向服务器发送SIGUSR2即可
样例:

$serv->reload();

swoole_server::shutdown

功能描述:关闭服务器。
函数原型

// 类成员函数
public function swoole_server::shutdown()

返回:调用成功返回true,否则返回false
参数说明:无
说明
此函数可以用在worker进程内,平滑关闭全部的Worker进程。
也可向Master进程发送SIGTERM信号关闭服务器。
样例:

$serv->shutdown();

swoole_server::addtimer

功能描述:设置一个固定间隔的定时器
函数原型

// 类成员函数
public function swoole_server::addtimer(int $interval);
// 公共函数
function swoole_server_addtimer(swoole_server $serv, int $interval);

返回:设置成功返回true,否则返回false
参数说明

参数说明
int interval定时器的时间间隔,单位为毫秒ms

说明
swoole定时器的最小颗粒是1毫秒,支持多个不同间隔的定时器。
注意不能存在2个相同间隔时间的定时器。
使用多个定时器时,其他定时器必须为最小定时器时间间隔的整数倍。

该函数只能在onWorkerStart/onConnect/onReceive/onClose回调函数中调用。
增加定时器后需要为Server设置onTimer回调函数,否则Server将无法启动。

样例:

$serv->addtimer(1000);              //1s
swoole_server_addtimer($serv,20);   //20ms

swoole_server::deltimer

功能描述:删除指定的定时器。
函数原型

// 类成员函数
public function swoole_server::deltimer(int $interval);

返回:无
参数说明

参数说明
int interval定时器的时间间隔,单位为毫秒ms

说明
删除间隔为interval的定时器

样例:

$serv->deltimer(1000);

swoole_server::after

功能描述:在指定的时间后执行函数


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swoole Server实例发布时间:2022-02-02
下一篇:
Swoole server事件回调函数发布时间:2022-02-02
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap