初识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脚本的10个技巧(7)
Oct 09 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
php实现事件监听与触发的方法
Nov 21 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
php微信支付之APP支付方法
Mar 04 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php png失真的原因及解决办法
Oct 24 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模板页面中分页代码的解析
2009/02/06 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
民间个人借款协议书
2014/09/30 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
三十年同学聚会感言
2015/07/30 职场文书
如何书写邀请函?
2019/06/24 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书