初识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 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
PHP下判断网址是否有效的代码
Oct 08 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
解析php中获取系统信息的方法
Jun 25 PHP
实现获取http内容的php函数分享
Feb 16 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
详解PHP处理密码的几种方式
Nov 30 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
js控制table合并具体实现
2014/02/20 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
js消除图片小游戏代码
2019/12/11 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
python中查看变量内存地址的方法
2015/05/05 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python可视化实现KNN算法
2019/10/16 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
师德标兵事迹材料
2014/12/19 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Python实现归一化算法详情
2022/03/18 Python