初识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 相关文章推荐
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
ADODB结合SMARTY使用~超级强
Nov 25 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
ThinkPHP实现分页功能
Apr 28 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 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
ADODB的数据库封包程序库
2006/12/31 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
json跨域调用python的方法详解
2017/01/11 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python 负数取模运算实例
2020/06/03 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
营销总经理岗位职责
2014/02/02 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
新学期开学演讲稿
2014/05/24 职场文书
企业负责人任命书
2014/06/05 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
安全伴我行主题班会
2015/08/13 职场文书