初识PHP中的Swoole


Posted in PHP onApril 05, 2016

Swoole是一种PHP高级Web开发框架,框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成。

官方定义:

Swoole:重新定义PHP

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

swoole 扩展安装及案例来源:http://wiki.swoole.com/wiki/page/6.html

简单案例:

<?php
class Server
{
private $serv;
public function __construct()
{
$this->serv = new swoole_server("0.0.0.0", 9501);
$this->serv->set(array(
'worker_num' => 8,
'daemonize' => false,
'max_request' => 10000,
'dispatch_mode' => 2,
'debug_mode' => 1
));
$this->serv->on('Start', array($this, 'onStart'));
$this->serv->on('Connect', array($this, 'onConnect'));
$this->serv->on('Receive', array($this, 'onReceive'));
$this->serv->on('Close', array($this, 'onClose'));
$this->serv->start();
}
public function onStart($serv)
{
echo "Start\n";
}
public function onConnect($serv, $fd, $from_id)
{
$serv->send($fd, "Hello {$fd}!");
}
public function onReceive(swoole_server $serv, $fd, $from_id, $data)
{
echo "Get Message From Client {$fd}:{$data}\n";
}
public function onClose($serv, $fd, $from_id)
{
echo "Client {$fd} close connection\n";
}
}
// 启动服务器
$server = new Server(); 
<?php
class Client
{
private $client;
public function __construct()
{
$this->client = new swoole_client(SWOOLE_SOCK_TCP);
}
public function connect()
{
if (!$this->client->connect("127.0.0.1", 9501, 1)) {
echo "Error: {$fp->errMsg}[{$fp->errCode}]\n";
}
$message = $this->client->recv();
echo "Get Message From Server:{$message}\n";
fwrite(STDOUT, "请输入消息:");
$msg = trim(fgets(STDIN));
$this->client->send($msg);
}
}
$client = new Client();
$client->connect();

分别打开两个终端输入:php server.php

php client.php 即可看到效果!

Swoole功能介绍

包含以下几个特色功能:

1、 类似ORM的数据查询,提供SQL封装器,让MySQL的SQL与PHP的Array,会话,Cache无缝结合。

2、App MVC分层结构,有效的程序结构分层,提高程序的可维护性和扩展性,实现低耦合,基于接口开发。

3、集成大量,实用的功能,比如方便的数据库操作,模板操作,缓存操作,系统配置,表单处理,分页,数据调用,字典操作,上传处理,内容编辑,调试等。

4、模板-数据反射系统,可以直接在模板中调用数据,提供很多标签,可是无需修改程序,只修改模板,即可实现网站各类更新维护工作。

另外的几个功能

1、Swoole包含了大量类,提供众多的功能扩展,基本上Web开发能够用到的功能类,大部分都可以在Swoole框架中找到。

2、Swoole拥有插件系统,Fckeditor、Adodb、pscws中文分词、中文全文索引系统、最新的Key-Value数据库思想,TokyoTyrant,可以无限扩展框架的功能。

PHP 相关文章推荐
PHP中的超全局变量
Oct 09 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
PHP $_FILES函数详解
Mar 09 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
php实现字符串反转输出的方法
Mar 14 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
PHP加密解密实例分析
Dec 25 PHP
php获取linux命令结果的实例
Mar 13 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 #PHP
PHP读取大文件的多种方法介绍
Apr 04 #PHP
PHP如何将XML转成数组
Apr 04 #PHP
php自动加载方式集合
Apr 04 #PHP
php文件上传的两种实现方法
Apr 04 #PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 #PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 #PHP
You might like
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
python实现简单中文词频统计示例
2017/11/08 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
python实现批量注册网站用户的示例
2019/02/22 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
机电专业毕业生求职信
2013/10/27 职场文书
七年级英语教学反思
2014/01/15 职场文书
优秀公益广告词大全
2014/03/19 职场文书
防火标语大全
2014/10/06 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
校园安全教育心得体会
2016/01/15 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
django中websocket的具体使用
2022/01/22 Python
python playwright之元素定位示例详解
2022/07/23 Python