热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高性能php开发框架,PHP高性能框架选择

在不用缓存、集群之类东东只情况下,PHP框架哪家强?我指的是高并发高负载,并且适合做大型项目的。高负载不是一个语言的问题,这

在不用缓存、集群之类东东只情况下,PHP框架哪家强?我指的是高并发高负载,并且适合做大型项目的。

高负载不是一个语言的问题,这个讨论的范围已经超出了PHP:

1、如果同一类型的的框架(指都是为了解决某类问题,比如CMS,论坛等乖)是比较成熟的,那么在生产环境,大家的差异不会差不那里去;

2、框架的最主要目的不是为了解决“负载”的问题,而是加速开发。

3、负载的问题,最直接的可以由硬件来完成,比如一个相对比较烂的程序,只有要足够的资源,也可以比一个资源不足的程序跑得好;一个程序,先是考虑能否完成业务,再考虑其它的问题,会比较好一点;

4、框架本身也不一定就决定了负载,也决定于使用的人,比如框架提供的缓存是否被正确的使用,框架提供的优化配置是否被合理的使用等等。

……

说了这么多,其实想说:哪个框架熟悉就用哪个,真的等到负载出问题了,找你的老板,相信他会有更好的解决方案。(负载出问题了,一定是到了要数钱的阶段了)

决定能否高并发高负载的是你的业务类型和代码质量,和框架没有太多关系。

大多数情况下业务的性能消耗是远大于框架本身的消耗,除非你的业务只是简单的CURD

性能好,简单(c扩展的,PHP代码进行的都是间接的C调用,就像PHP的库函数一样.):

yaf 、Phalcon或者yii、laravel等国外庞大框架 基本上高性能并且轻量级软件都C有关例如nginx和python等

PHP缓存技术:Memcache技术、OPcache技术、accurlater技术和Varnish技术

Mysql和文件缓存技术:Redis和Nosql

要高并发,yaf实在是不合适。yar还稍微说的过去。

个人的建议是:swoole + apache thrift 或者推荐Phalcon 或者Swoole+Lumen 基于Swoole加速Lumen,开发效率和性能二者兼得。其他国内php内容管理系统都是渣渣。

Requirements

Dependency

Requirement

>= 5.5.9Recommend PHP7+

>= 1.7.19 No longer support PHP5 since 2.0.12 Recommend 4.2.3+

>= 5.1 Recommend 5.6+

Yaf的其实本质上讲,是个基础框架,仅提供了一个简单粗暴的基础URI路由功能,完事了。

最关键是并发和多线程以及定时器等等,Yaf本身不能实现。

所以swoole这个时候,优势突显。swoole可以以deamon形式长期稳定的运行在server上,直接走socket,提供并发服务。

而集成了thrift后,就可以为各种其他端提供数据。比如app,web网页(这个时候,可以用yaf当作前端读取数据提供高性能),甚至为C,c++等端进行数据交互,非常方便。

但是Yaf是鸟哥的成名作,要用框架又要追求高性能就用Yaf吧,据说百度内部用的也是Yaf的修改版或者thinkCMF,据说微博也用的yaf yar所以还是比较好的方案。可以用yaf,推荐搭建hhvm或者php7 。

用你最熟悉的框架就好

高并发主要关注两点:

1,系统架构

2,业务逻辑 这个跟框架还算有点关系,不过关注点不在用什么框架

系统架构

主要是考虑的负载, 网络请求支持,运维轻松搞定,商量好方案,慢慢加机器就好。

业务逻辑

这块做为开发人员,要知道业务本身压力是在数据库读写,文件读写

可以根据情况做缓存方案 和 异步处理方案

在真正的高并发下,程序逻辑本身和单点都会是瓶颈,做好负载均衡解决方案,才是支持无限增长高并发的终极解决方案

总结一下自己的认识:

只在程序层面考虑选型确实眼界不够,因为开发、运维、业务是连在一起的。如果要求很高,可能还需要语言平台上的考虑。

只需要考虑比较主流的框架,人民的眼睛是雪亮的。

功能和性能是互斥的,功能方面就是组件多,接口多,灵活性高,扩展性强,这些都需要硬件资源(cpu和内存)来支撑的,当然还要多点点的时间。所以很过分支版本是精简版,可以考虑。

高并发高负载是运维上的事,程序只需要稍作配合,主要是分发和各级别的缓存。

高并发高负载是需求的一个趋势,但对好多项目来说这个需求超前了,等项目死的时候还没有什么人访问。。

高并发本质和框架是无关的。。。框架只是封装了一些组件,高并发还得看架构设计,异步消息队列怎么搞,缓存怎么搞,不能单单寄希望于框架,不然的话,最后你会发现加框架和不加框架会是一个效果。。

高并发的API性能取决于架构和缓存以及数据库!!!和框架没任何关系!!!

PHP 框架, 本来解决的问题就是开发效率, 相比 JAVA, C/C++ 来说, PHP 的执行效率够慢的, 框架还是一堆代码构建于 PHP 之上, 所以追求极致性能的话, 不建议用 PHP 来做。一般java、Python和go能够很好解决异步和负载问题。

io密集型的高并发应该用epoll模型将并发调度到io层,然后就是进行db的设计了,理论上跟cgi关系不大了。如果你说的是CPU密集型的高并发请忽略

高性能PHP框架 Phalcon

PhalconPHP 是一个使用 C 扩展开发的 PHP Web 框架,提供高性能和低资源占用。

Phalcon 是一个开源的、全堆栈的 PHP 5 框架,使用 C 扩展编写,专门为高性能优化。无需学习和使用 C 语言,所有函数都以 PHP 类的方式曾现。Phalcon 是一个松耦合的框架。

使用时需在 php.ini 中添加:extension=phalcon.so

Swoole高性能网络通信引擎

Swoole是一个PHP扩展,扩展不是为了提升网站的性能,是为了提升网站的开发效率。最少的性能损耗,换取最大的开发效率。利用Swoole扩展,开发一个复杂的Web功能,可以在很短的时间内完成了。

——PHP的异步、并行、高性能网络通信引擎,支持TCP长连接,Websocket,Mqtt等协议。

PHP的协程高性能网络通信引擎,使用C/C++语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端/客户端。

Swoole4支持完整的协程编程模式,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步IO。

Swoole4协程仅支持PHP7,无法在PHP5中使用

除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。

Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP + Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

Swoole是开源免费的自由软件,授权协议是Apache2.0,企业和个人开发者均可免费使用,并且在Swoole之上所作的修改可用于商业产品,无需开源(注:必须保留原作者的版权声明)。

Swoole不是一个像Zend Framework、CakePHP、Yii、symfony、ThinkPHP等一样的框架,也不是一个像WordPress、Drupal、Discuz、UChome等开源产品看齐的项目。 Swoole的目标是向Java框架、Ruby On Rails、Python Django Pylons等一流框架发起挑战。

运行环境:Linux Windows Mac FreeBSD Unix

PHP版本支持:PHP5.3+

支持的数据库:MS SQL Server、MySQL、IBM DB2、Oracle、Interbase 、SQLite、PostgreSQL、ODBC

支持的运行方式:Web、Cli命令行脚本、PHP-GTK GUI。

PHP四大主流框架的优缺点总结

ThinkPHP

ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。 ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。

优点:

1.易于上手,有丰富的中文文档;

2.框架的兼容性较强,PHP4和PHP5完全兼容、完全支持UTF8等。

适合用于中小项目的开发

缺点:

1.对Ajax的支持不是很好;

2.目录结构混乱,需要花时间整理;

3.上手容易,但是深入学习较难。

Yii

Yii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。

优点:

纯OOP

用于大规模Web应用

模型使用方便

开发速度快,运行速度也快。性能优异且功能丰富

使用命令行工具。

缺点:

对Model层的指导和考虑较少

文档实例较少

英文太多

要求PHP技术精通,OOP编程要熟练!

View并不是理想view,理想中的view可能只是html代码,不会涉及PHP代码。

CodeIgniter

优点:

Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几 行代码就可以进行输出。可谓是“大道至简”的典范。 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路 由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能. 快速简洁,代码不多,执行性能高,框架简 单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用.

缺点:

本身的实现不太理想。内部结构过于混乱,虽然简单易用,但缺乏扩展能力。 把Model层简单的理解为数据库操作. 框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.

评价:

总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不 错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的library 也还不错,简洁高效。

Lavarel 框架

优点:

Laravel 的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD 和BDD,作为一个框

架,它准备好了一切,composer 是个php 的未来,没有composer,PHP 肯定要走向没落。

laravel 最大的特点和优秀之处就是集合了php 比较新的特性,以及各种各样的设计模式,

Ioc 容器,依赖注入等。

缺点:

基于组件式的框架,所以比较臃肿



推荐阅读
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文详细阐述了云主机流量的概念,探讨其对网站性能和安全的关键影响,并提供了优化配置的实用建议。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ... [详细]
  • 本文介绍如何在Laravel框架中集成微信支付功能,包括如何配置微信支付环境、处理支付请求及接收支付回调等关键步骤。 ... [详细]
author-avatar
mobiledu2502927147
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有