初识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 03 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
PHP数据类型的总结分析
Jun 13 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
destoon数据库表说明汇总
Jul 15 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
php中文验证码实现方法
Jun 18 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
js触发select onchange事件的小技巧
2014/08/05 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Vue响应式原理详解
2017/04/18 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
华为python面试题
2016/05/03 面试题
任课老师推荐信范文
2013/11/24 职场文书
学徒工职责
2014/03/06 职场文书
共产党员承诺书
2014/03/25 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
灵山大佛导游词
2015/02/04 职场文书
运动会观后感
2015/06/09 职场文书
在职证明书模板
2015/06/15 职场文书
Python读取和写入Excel数据
2022/04/20 Python