在不用缓存、集群之类东东只情况下,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 容器,依赖注入等。
缺点:
基于组件式的框架,所以比较臃肿