Swoole-真正的PHP Web开发框架

解锁 PHP 并发潜能:Swoole 框架详解与最佳实践 Swoole 是一个高性能的 PHP 异步网络通信框架,通过 C语言扩展 实现,突破了传统 PHP 的单线程、请求-响应模式的性能瓶颈。它支持 高并发、低延迟 的网络服务开发,适用于构建 HTTP、WebSocket、TCP/UDP 服务器等。 阅读详情

一、Swoole框架介绍

swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。

swoole通过配置文件可以实现在轻松更换模块驱动方式。比如数据库连接,可以很方便得在Pdo MySQL MySQLi之间更换。缓存可以用filecache,也可以用dbcache,还可以用memcache。日志可以用数据库日志,也可以用系统日志或文件日志。

代码:

Php代码 
  1. <?php  
  2. require 'config.php';  
  3. //自动加载模块  
  4. $php->autoload('db','tpl','cache','log','event','upload');  
  5. //数据库查询  
  6. $res = $php->db->query('select * from test');  
  7. $one = $res->fetch();  
  8. $all = $res->fetchall();  
  9. //日志  
  10. $php->log->info('hello');  
  11. //缓存  
  12. $php->cache->get('cache_key');  
  13. $hello = $php->cache->set('cache_key','me',1800);  
  14. //模板  
  15. $php->tpl->assign('hello',$hello);  
  16. $php->tpl->display('index.html');  
 

 

Swoole提供了很多类库工具,表单生成、输入验证和过滤,登录验证处理,JS生成,Ajax支持,调试工具,客户端操作,URL合并拆分工具等。

另外也提供,网络类(Block、Select、Event的TCP、UDP Server & Client),也提供一些简单的服务器协议实现(HTTP,Chat,FTP,SMTP,POP3等)。还有2个js类库,UI库和表单验证。

二、高级应用

Swoole框架也提供了MVC的apps结构。通过contoller的继承,实现业务逻辑的封装,model的继承,实现数据操作的封装,view层使用smarty模板引擎实现页面显示的逻辑封装。

Swoole框架提供了强大的Model类,有get,gets,set,sets,del,dels,put可以非常方便的实现数据库的增删查改,gets接口还有自动分页的功能。

swoole的SQL封装很灵活,它的特色是,所有的SQL拼接都使用数组的方式,而不是对象方法,这样数据库查询参数可以和PHP的$_GET,$_POST,$_SESSION,Cache,Cookie无缝集成。

代码:

 

Php代码 
  1. <?php  
  2. $model = createModel('TestModel');  
  3. $gets['where'][] = 'id>1';  
  4. $gets['order'] = 'id desc';  
  5. $gets['limit'] = 10;  
  6. $gets['where'][] = 'category=10';  
  7. $gets['select'] = 'id,title,name'];  
  8. $gets['leftjoin'] ….  
  9.   
  10. $data = $model->gets($gets);  
 

Swoole中也有ORM的数据库操作方式,可以参考开发手册。

Swoole MVC URL路由方式,是通过用户提供的函数完成的,用户函数只需要返回具体调用哪个Controller的哪个Method。配合使用url rewrite,可以定制出任意的URL方案,比如/controller/action/ , controller_action.do,controller/action.do等。或者像Django一样完全使用正则来规定URL。

Event

Swoole提供了一个事件触发系统。

$php->event->raise('sendsms',$mobile,$sms_content);

这是一个很酷的设计,如果在本地测试环境中,你可是配置为同步,那么raise引发一个时间后,去执行事件对应的handle函数。如果是服务器环境,可以设置为异步,那么raise只会向Queue服务器投递一个事件。在后台启动一个守护进程,从Queue服务器取得事件,然后再用handle函数去处理。

Upload

swoole可以对上传文件统一处理,限制上传大小。上传图片的话,可以自动压缩图片尺寸,产生缩略图。

三、部署方式和压力测试

Swoole框架可以像正常的PHP一样方式部署于典型的LAMP环境。也可以采用Swoole本身提供的Http Server方式运行。

普通LAMP方式,由于每次请求包含的php文件较多,最好安装APC等OPCode缓存。压力测试,同样的代码,运行效率略低于thinkphp,但远超CodeIgniter,差不多是2倍以上。

值得一提的是以Server方式运行的Swoole,性能极为强悍。是同样代码Apache部署环境下的将近8-14倍。而且内存占用很少。

代码:

Php代码 
  1. <?php  
  2. require('config.php');  
  3. define('SESSION_CACHE','file://localhost#sess');  
  4. require(LIBPATH.'/function/cli.php');  
  5. //Mime格式  
  6. require(LIBPATH.'/data/mimes.php');  
  7. $mime_types = array_flip($mimes);  
  8. //静态文件许可  
  9. $static_files = array_flip(array('static','templates','swoole_plugin','favicon.ico','robot.txt'));  
  10. $static_access = array_flip(array('html','htm','jpg','gif','png','js','css'));  
  11. //加载全部controller  
  12. import_all_controller();  
  13.   
  14. $_SERVER['run_mode'] = 'server';  
  15. $_SERVER['server_driver'] = 'SelectTCP'; //BlockTCP,EventTCP,SelectTCP  
  16. $_SERVER['server_host'] = '0.0.0.0';  
  17. $_SERVER['server_port'] = 8888;  
  18. $_SERVER['server_processor_num'] = 4;   //启用的进程数目  
  19. $_SERVER['session_cookie_life'] = 86400; //保存SESSION_ID的cookie存活时间  
  20. $_SERVER['session_life'] = 1800;  
  21.   
  22. $php->runServer();  
 

 

测试代码:

Php代码 
  1. <?php  
  2. class page extends Controller  
  3. {  
  4.     function index()  
  5.     {  
  6.         $data = createModel('UserInfo')->get(12)->get();  
  7.         $this->swoole->tpl->assign('data',$data);  
  8.         $html = $this->swoole->tpl->fetch('test.html');  
  9.         $time = $this->showTime();  
  10.         return $html.$time;  
  11.     }  
  12. }  
 

 

Shell代码 
  1. ab -c 100 -n 1000 -k http://127.0.0.1:8888/page/index/  
  2.   
  3. Requests per second  
  4. Time per request (mean)  
  5. Time per request (mean, across all concurrent requests)  
 

 

 

运行方式

Swoole EventTCP

Swoole SelectTCP

Swoole BlockTCP

Apache/Prefork

单进程

571.70 [#/sec]

174.916 [ms]

1.749 [ms]

659.01 [#/sec]

151.743 [ms]

1.517 [ms]

561.24 [#/sec]

178.178 [ms]

1.782

80.57

1241.083 [ms]

12.411 [ms]

4进程

1153.63 [#/sec]

86.683 [ms]

0.867 [ms]

1010.08 [#/sec]

99.002 [ms]

0.990 [ms]

1094.58 [#/sec]

91.359 [ms]

0.914 [ms]

 

 

在我的Ubuntu下进行测试(Inter core E5300+2G内存,同时有其他软件运行ecilpse,firefox,chrom)。Apache只跑到了 80多RPS。4进程的Swoole Server竟然跑到了惊人的1153RPS。

 

可以用apache ProxyPass方式,或者是Nginx upstream进行代理分发和负载均衡。

四、源代码

Swoole框架已经有3年的历史,从08年开始,到现在经历了多个版本的升级。目前也不少成功运用的案例。但参与的PHP程序员不是很多,并没有广为人知。

源代码托管于:http://code.google.com/p/swoole/

期待大家一起参与研究!

使用Swoole开发高性能的Web爬虫 Web爬虫是一种自动化获取网络数据的工具,它可以在互联网上收集数据,并且可以被应用于各种不同的领域,如搜索引擎、数据分析、竞争对手分析等。Swoole是一个针对PHP语言的高性能网络通信框架,它可以替代原生的PHP扩展,提供更好的性能和开发效率。它支持异步编程模式,能够极大地提高网络通信的效率和吞吐量,并且内置了丰富的网络通信相关的功能组件,如TCP/UDP服务器、HTTP服务器、WebSocket服务器等。当然,这只是一个简单的示例,实际的爬虫可能更为复杂,需要根据实际情况进行相应的调整和优化。 阅读详情

相关推荐

Swoole高性能PHP应用框架实战课程设计

在操作系统中,内存模型定义了内存的组织、数据可见性、同步操作等。而在Swoole扩展中,常驻内存模型通过将应用状态存储在内存中,避免了频繁的磁盘I/O操作,提高了性能。常驻内存模型有以下几个特性:快速数据访问:数据保存在内存中,读写速度远超磁盘。状态持久化:内存中的数据状态可以在进程间共享,便于持久化。资源竞争:多个协程或线程可能同时访问和修改内存中的数据,造成资源竞争问题。

weixin_28681379的博客 795

详解swoole框架快速入门

Swoole框架是一个适用于Web开发的PHP框架。与传统的PHP框架不同,Swoole框架基于Swoole扩展,提供了更底层的服务器通信机制,可以支持UDP、TCP等多种协议,而不仅仅限于HTTP。了解更多关于Swoole框架和Swoole扩展的详细信息可参考Swoole文档中心的链接:http://wiki.swoole.com/wiki/page/p-framework.html。会映射到 $ROOT/apps/configs/db.php文件,db.php中必须返回数组,key为master。

weixin_45734165的博客 1420

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码解析)

本文详细介绍了如何使用libiec61850库通过C语言动态获取IED设备模型,包括环境配置、连接建立、模型遍历及错误处理等关键步骤。通过完整的代码示例和实战案例,帮助开发者掌握智能变电站通信中的核心技术,提升工业自动化系统的开发效率。

weixin_42519985的博客 433

swoole框架有哪些呢

MixPHP:基于 Swoole 的高性能框架,支持 FastCGI、常驻内存和协程三种模式。提供了 Console、Daemon、HTTP、WebSocket、TCP、UDP 开发所需的组件1。提供丰富的组件,如协程版的 MySQL 客户端、Redis 客户端、WebSocket 服务端及客户端等1。支持 HttpApi、WebSocket、TCP、UDP 服务的开发,适用于互联网、移动通信、企业软件等领域1。内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM1。

weixin_44703272的博客 978

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1590

滑模控制实战:用Python从零实现SMC算法(附完整代码)

本文通过Python实战,从零详解滑模控制(SMC)算法的核心原理与代码实现。文章聚焦于一阶系统,使用NumPy和Matplotlib逐步构建控制器,并针对SMC固有的抖振问题,详细讲解了边界层法的原理与实现,提供了完整的代码和参数调优指南,帮助读者直观理解并掌握这一鲁棒性极强的非线性控制方法。

weixin_29285605的博客 465

PHP异步编程框架Swoole的核心原理与应用实践

Swoole为PHP带来了革命性的变化,使其从传统的Web脚本语言进化为可以开发高性能网络服务的全能选手。构建百万级并发的网络服务开发实时通信和游戏后端实现高效的微服务架构处理大数据量和高并发场景虽然Swoole的学习曲线相对传统PHP更为陡峭,需要开发者掌握异步编程思维、多进程管理和内存控制等新概念,但所带来的性能提升和业务可能性是巨大的。从简单项目开始逐步掌握Swoole善用协程简化异步编程重视资源管理和内存泄漏问题合理配置参数针对业务优化。

MenzilBiz的博客 1593

保姆级教程:如何用Le2i Fall Detection Dataset训练你的跌倒检测模型(附数据集下载)

本文提供了一份详细的实战指南,教你如何使用Le2i Fall Detection Dataset训练跌倒检测模型。内容涵盖数据集的深度解析、预处理与工程化管道搭建、模型选择与训练策略,以及评估优化与部署考量,旨在帮助开发者从零构建高精度、可应用的跌倒检测系统。

assembly8low的博客 1288

Swoole Framework logo PHP高级Web开发框架 Swoole Framework

与Swoole扩展不同,SwooleFramework是纯PHP的代码,提供了完整的Web开发框架,内置应用服务器。提供统一注册树,数据库操作,模板,Cache,日志,队列,上传管理,用户管理等丰富的功能特性。 使用内置应用服务器,可节省每次请求代码来的额外消耗。连接池技术可以很好的帮助存储系统节省连接资源。 Swoole_Framework支持的特性 热部署,代码更新后即刻生效。

sb___itfk的专栏 1383

第14.1章 高翔博士2025年11月最新开源框架Lightning-LM源码学习解读(一):激光-IMU定位+建图算法各模块简介

Lightning-LM:高效激光SLAM定位系统 该框架基于模块化设计,通过激光-IMU融合实现快速建图与定位,核心特点包括: 极速性能:纯CPU运行(建图1.2核/定位0.8核) 模块化架构:包含激光里程计(LIO)、地图管理、回环检测等独立模块 动态场景支持:地图分块加载、动静态图层分离 多模式适配:支持ROS2环境下的在线/离线运行 关键模块包括前端里程计(core/lio)、2D/3D地图转换(core/g2p5)、轻量优化库(core/miao)等,通过系统控制器(core/system)协调流

行知SLAM 2438

某Z节验证码

某Z节验证码、captchaBody、滑块、旋转、空间推理

mamenqi_csdn的博客 771

Swoole介绍-真正的PHP Web开发框架

一、Swoole框架介绍 swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用

逆袭木头人的博客 5946

C#实战YOLO26物体检测:从ONNX模型转换到工业级部署全复盘

本文介绍了在C#上位机中集成YOLO26模型实现工业产线零件检测的实战方案。针对工业场景对实时性(单帧推理≤100ms)、轻量化和易部署的需求,选择YOLO26模型相比YOLOv8在推理速度提升30%且模型体积更小。文章详细拆解了从模型转换(PyTorch转ONNX)、C#推理引擎封装到部署优化的全流程,重点解决了ONNX兼容性、坐标偏移、GPU降级等工业落地中的典型问题。通过解耦设计、性能优化和异常处理机制,最终在工控机(i5-8500+GTX1650)上实现60ms的单帧推理速度,为工业检测项目提供了可

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1325

真正的PHP Web开发框架之Swoole,你真的知道吗?!

一、Swoole框架介绍 swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。 swoole通过配置文件可以实现在轻松更换模块驱动方式。比如数据库连接,可以很方便得在Pdo MySQL

weixin_49163826的博客 2085

UCIE Specification详解(十一)

Electrical Layer (2D and 2.5D)以及UCIe-3D

Crazzy_M的博客 1194

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php swool 框架,基于 Swoole 开发 Web 框架

Swoole 是当前国内最受欢迎的 PHP 扩展之一,提供了强大的并发编程支持,很多大厂如腾讯等都在核心业务中大规模使用 Swoole。Swoole 已经成为新时代 PHPER 的必备技能,而能否熟练掌握 Swoole ,也似乎也越来越成了初中级 PHPER 与高级 PHPER 的分水岭。在层出不穷的 Swoole 框架中,其实没有本质上的区别,无论它们的官网宣称有多强大,其底层依然离不开 Swo...

weixin_39932838的博客 334

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Swoole(PHP高级Web开发框架)

  框架不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole框架,开发一个复杂的Web功能,可以在很短的时间内完成!  Swoole有独立特行的道!  Swoole不是一个向Zend Framework、CakePHP、Yii、symfony、ThinkPHP等框架,或者WordPress、Drupal 、Discuz、UCh...

weixin_34235457的博客 284

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

db和model用哪个开发大型项目 thinkphp_真正的PHP Web开发框架之Swoole,你真的知道吗?!...

一、Swoole框架介绍swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框...

weixin_39864261的博客 229

swoole框架基本总结

  框架-Swoole扩展-Swoole文档中心 http://wiki.swoole.com/wiki/page/p-framework.html      swoole有两个部分。 一个是PHP扩展,用C开发的,这是核心。 另一个是框架,像yii、TP、Laravel一样,是PHP代码写的。   swoole扩展本身提供了web服务器功能,可以替代php-fpm。 而如果仅仅用...

weixin_30883777的博客 1161

ThinkCMF是一款支持Swoole的开源内容管理框架,基于ThinkPHP开发,同时支持PHP-FPM和Swoole双模式,让WEB开发更快!

简介: ThinkCMF5.1主要特性 更改框架协议为MIT,让你更自由地飞 基于ThinkPHP 5.1重构,但核心代码兼容5.0版本,保证老用户最小升级成本 增加对swoole支持,同时支持swoole协程和全同步模式 重新规范目录结构,更贴心 CMF核心库及应用使用composer加载 合并API到框架核心 更规范的代码,遵循PSR-2命名规范和PSR-4自动加载规范 支持 composer 管理第三方库 核心化:独立核心代码包 应用化:开发者以应用的形式增加项目模模块 插件化:更强的插件机制,开发者

字节网盘SEO工具 406

发布PHP项目_2020年PHP开发程序员还有希望吗?

我们整理最近5年的每个月TIOBE发布的编程语言排名来看,PHP排名一直都徘徊在六到十名之间,最近一次公布中PHP排在第八名。TIOBE发布2020编程排名PHP开发优势主要在web开发,web领域开发语言有很多,常用有java,Python,visual basic .net等等,而且大型web开发我们一般还是会选择java为主,这不仅考虑安全问题,而且还考虑网站稳定行。所以网上很多PHP开发者...

weixin_36219894的博客 90

swoole框架快速入门

swoole有两个部分。 一个是PHP扩展,用C开发的,这是核心。 另一个是框架,像yii、TP、Laravel一样,是PHP代码写的。 swoole扩展本身提供了web服务器功能,可以替代php-fpm。 而如果仅仅用swoole框架,可以像其它PHP框架一样,运行在nignx、apache等web服务器中。 swoole框架像PHP框架一样,适用于web开发。 而swoole扩展是提...

weixin_30596023的博客 410

2020php开发,2020年PHP开发程序员另有希望吗?

我们整理最近5年的每个月TIOBE宣布的编程语言排名来看,PHP排名一直都倘佯在六到十名之间,最近一次宣布中PHP排在第八名。 TIOBE宣布2020编程排名PHP开发优势主要在web开发,web领域开发语言有许多,常用有java,Python,visual basic .net等等,而且大型web开发我们一样平常照样会选择java为主,这不仅思量安全问题,而且还思量网站稳固行。以是网上许多PHP...

weixin_35275073的博客 98
上一篇: Cocoapods pod install
下一篇: Think in AngularJS:对比jQuery和AngularJS的不同思维模式
bamboolsu
博客等级 码龄22年 200粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值