初识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读取RSS feed的代码
Aug 01 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
PHP中JSON的应用技巧
Oct 10 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
非常实用的php验证码类
May 15 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
实例讲解PHP页面静态化
Feb 05 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
2011/11/07 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php fread函数使用方法总结
2019/05/28 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Python文件读写常见用法总结
2019/02/22 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
python3将变量输入的简单实例
2020/08/19 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
MySQL面试题
2014/01/12 面试题
采购主管工作职责
2013/12/12 职场文书
精彩自我鉴定
2014/01/16 职场文书
岗位说明书范文
2014/05/07 职场文书
远程教育培训心得体会
2016/01/09 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书