1、能做什么

异步多线程服务器和客户端

异步mysql、redis、数据库连接池、任务队列

http/websocket服务器/客户端

异步文件独写

支持协程

2、环境要求

php5.4以上

centos7

3、关于tcp服务器

4、关于UDP服务器

packet接收发送数据到客户端的数据

5、关于调试工具【网络调试助手】

6、代码示例

tcp

//创建服务器
$host='0.0.0.0';
$port=9501;$ws = new swoole_server($host,$port);
/*** host :监听的ip* port: 端口号 1024以下的端口号需要root权限*/
//使用
// bool $swoole_server->on($envent,$callback);
/*** connect :当建立链接的时候 $server:服务器信息,$fd 客户端信息* receive :当接收到数据的时候 $server:服务器信息,$fd:客户端信息。$from_id:id ,$data:数据* closer :关闭连接*/
$ws->on('connect',function($server,$fd){echo "建立连接";
});
$ws->on('receive',function($server,$fd,$from_id,$data){var_dump($data);echo "接收到数据\n";
});
$ws->on('close',function($server,$fd){echo "关闭连接";
});
$ws->start();//启动服务

UDP

$serv=new swoole_server('0.0.0.0',9502,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);
/**\* $server:服务器信息* $data:接收到的数据* $fd:客户端信息*/
$serv->on('packet',function($server,$data,$fd){//发送到数据到客户端$server->sendto($fd['address'],$fd['port'],"server:$data");var_dump($fd);
});
$serv->start();//启动服务

web服务器

<?php
$serv= new swoole_http_server("0.0.0.0",9501);
/*** 获取请求* //request 请求信息* response 返回信息**
**/
$serv->on("request",function ($request,$response){$response->header("Content-Type","text/html:charset=utf-8");$html = file_get_contents("./index.html");$response->end($html);
});
$serv->start();

websocket服务器

<?php
//创建websocket服务器
$serv= new swoole_websocket_server("0.0.0.0",9502);//on//open 建立连接 $ws 服务器  $request :客户端信息
$serv->on("open",function ($ws,$request){var_dump($request);$ws->push($request->fd,"welcom\n");});
//message 发送消息
$serv->on("message",function ($ws,$request){echo "message:$request->data";$ws->push($request->fd."get it message");
});
//close 关闭连接
$serv->on("close",function ($ws,$request){echo "close\n";
});
$serv->start();

swoole的初步学习相关推荐

  1. HTMLParser的初步学习

    Python的自带模块--HTMLParser的初步学习 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. ...

  2. 初步学习pg_control文件之三

    接前文,初步学习pg_control文件之二 继续学习: 研究 DBState,先研究 DB_IN_PRODUCTION ,看它如何出现: 它出现在启动Postmaster时运行的函数处: /* * ...

  3. eclipsevue代码怎么运行_[Java教程]使用eclipse初步学习vue.js操作

    [Java教程]使用eclipse初步学习vue.js操作 0 2017-11-26 19:00:06 一.vue.js的初步认识 https://unpkg.com/vue ">vu ...

  4. json2.js的初步学习与了解(转)

    转载来源:http://apps.hi.baidu.com/share/detail/6092406 json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org ...

  5. 【TensorFlow-serving】初步学习模型部署

    前言 初步学习tensorflow serving的手写数字识别模型部署.包括简单的模型训练.保存.部署上线.因为对docker和网络不太熟悉,可能会有部分错误,但是看完博客,能跑通整个流程.此博客将 ...

  6. 初步学习pg_control文件之八

    接前文  初步学习pg_control文件之七  继续 看:catalog_version_no 代码如下: static void WriteControlFile(void) {.../** In ...

  7. 初步学习pg_control文件之六

    接前文:初步学习pg_control文件之五 ,DB_IN_ARCHIVE_RECOVERY何时出现? 看代码:如果recovery.conf文件存在,则返回 InArchiveRecovery = ...

  8. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助...

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require( ...

  9. 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习

    虚拟机的安装及Linux的初步学习 坎坷的安装过程 首先我按照老师给的基于VirtualBox虚拟机安装Ubuntu图文教程进行了下载,下载很顺利但是安装时出现了问题. 起初我以为是电脑位数问题,但我 ...

最新文章

  1. 为什么不用原生Spring-Cloud-Config
  2. 【Network Security!】NTFS安全权限(看不懂你来打我)
  3. 图解设计模式:抽象工厂
  4. Quartz.Net定时任务EF+MVC版的web服务
  5. 电脑知识:电脑无法开机解决方案,赶紧收藏吧!
  6. c语言去除图像斑点,武汉理工-图像检测与处理技术-实验报告.doc
  7. 《Effective C++》阅后心得
  8. 【超全教程】SpringBoot 2.3.x 分层构建 Docker 镜像实践
  9. 软件架构 —— 消息范式
  10. Python多处理示例
  11. 2023中国科学技术大学计算机考研信息汇总
  12. BS架构与CS架构的区别(最详细)
  13. 一名软件测试工程师的日常
  14. 李白的苏台览古译文赏析
  15. linux c 端口复用,Linux C++ 网络编程学习系列(1)——端口复用实现
  16. linux系统键盘关机快捷键,Linux三种关机/重启系统的命令
  17. 用python画一朵鲜艳欲滴的红玫瑰
  18. Linux的vx开头的文件,微博 Qzone 微信 Linux文件及目录常用命令,进来瞅瞅
  19. (BAT批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
  20. java ftpClient 下载文件损坏问题

热门文章

  1. 中图杯获奖作品计算机组,“中图杯”第十四届环境地图大赛召开 地图慧成指定制图软件...
  2. ESP32-C3——专为物联网应用场景设计
  3. 一些程序中常出现的英文符号的读法
  4. VSCODE无法使用unordered_map解决
  5. android 图片底部波浪线,Android实现波浪线效果(xml bitmap)
  6. SystemUI 状态栏增加移动数据开启图标
  7. 台式电脑键盘错乱会出现计算机模式怎么办,​键盘按键错乱能修吗?台式电脑键盘按键错乱怎么修复?...
  8. 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
  9. [深度学习 - 实战项目] CRAFTCRNN_seq2seq图片文字提取
  10. 深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----方法区(元空间)