初识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 stream_get_meta_data返回值
Sep 29 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php使用websocket示例详解
Mar 12 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 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编程每天必学之验证码
2016/03/03 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
JS中数据结构之栈
2019/01/01 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
python多线程操作实例
2014/11/21 Python
Python with用法实例
2015/04/14 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python读取各种文件数据方法解析
2018/12/29 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
Python 多进程、多线程效率对比
2020/11/19 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
初中地理教学反思
2014/01/11 职场文书
《老王》教学反思
2014/02/23 职场文书
安全生产年活动总结
2014/08/29 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
出售房屋委托书范本
2014/09/24 职场文书
公积金具结保证书
2015/05/11 职场文书
活动宣传稿范文
2015/07/23 职场文书