初识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 Pear 安装及使用
Mar 19 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
phpize的深入理解
Jun 03 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
解析func_num_args与func_get_args函数的使用
Jun 24 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
PHP7内核之Reference详解
Mar 14 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
Web程序工作原理详解
2014/12/25 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
python super用法及原理详解
2020/01/20 Python
Python super()函数使用及多重继承
2020/05/06 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
Python实现微信表情包炸群功能
2021/01/28 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
聘用意向书
2014/07/29 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
表扬信格式模板
2015/05/05 职场文书
客户答谢会致辞
2015/07/30 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery