初识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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
PHP实现获取中英文首字母
Jun 19 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
php中define用法实例
Jul 30 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 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简单socket服务器客户端代码实例
2015/05/18 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
python django model联合主键的例子
2019/08/06 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
pycharm快捷键汇总
2020/02/14 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
详解CSS3:overflow属性
2020/11/17 HTML / CSS
婴儿地球:Baby Earth
2018/12/25 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
同事吵架检讨书
2014/02/05 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技