×
Swoole 简介Swoole 包含模块Swoole 环境依赖Swoole 编译安装Swoole 基本实例创建Swoole 编程须知Swoole 优化内核参数调整Swoole server配置选项Swoole server事件回调函数Swoole server函数列表

Swoole实例

Swoole Server实例Swoole Client实例Swoole HttpServer实例Swoole WebSocket实例Swoole Redis Server实例Swoole MySQL实例Swoole AsyncIO实例Swoole Task实例Swoole 2.0 正式版发布,协程特性支持 PHP 7Swoole Coroutine协程支持

Swoole Server实例


创建一个异步服务器程序,支持TCP、UDP、UnixSocket 3种协议,支持IPv4和IPv6,支持SSL/TLS单向双向证书的隧道加密。使用者无需关注底层实现细节,仅需要设置网络事件的回调函数即可。

swoole_server只能用于php-cli环境,否则会抛出致命错误

构建Server对象

$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);

设置运行时参数

$serv->set(array(
    'worker_num' => 4,
    'daemonize' => true,
    'backlog' => 128,
));

注册事件回调函数

$serv->on('Connect', 'my_onConnect');
$serv->on('Receive', 'my_onReceive');
$serv->on('Close', 'my_onClose');

PHP中可以使用4种回调函数的风格

启动服务器

$serv->start();

属性列表

$serv->manager_pid;  //管理进程的PID,通过向管理进程发送SIGUSR1信号可实现柔性重启
$serv->master_pid;  //主进程的PID,通过向主进程发送SIGTERM信号可安全关闭服务器
$serv->connections; //当前服务器的客户端连接,可使用foreach遍历所有连接

运行流程图

Swoole扩展架构图

进程/线程结构图

Swoole进程/线程结构图

简单Swoole tcp server实例:

$serv = new SwooleServer("127.0.0.1", 9501);

//设置服务器参数
$serv->set(array(
    'worker_num' => 8,   //工作进程数量
    'daemonize' => true, //是否作为守护进程
));

//设置事件回调函数
$serv->on('connect', function ($serv, $fd) {
    echo "Client:Connect.n";
});

$serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
    $serv->send($fd, 'Swoole: ' . $data);
    $serv->close($fd);
});

$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.n";
});

//启动服务器
$serv->start();

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)