热门标签 | 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 容器,依赖注入等。

缺点:

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



推荐阅读
  • 导读:很多朋友问到关于黑马php2019如何的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文将深入探讨MySQL与MongoDB在游戏账户服务中的应用特点及优劣。通过对比这两种数据库的性能、扩展性和数据一致性,结合实际案例,帮助开发者更好地选择适合游戏账户服务的数据库方案。同时,文章还将介绍如何利用Erlang语言进行高效的游戏服务器开发,提升系统的稳定性和并发处理能力。 ... [详细]
  • 这篇文章给大家介绍如何在PHP中利用MaskedPackage屏蔽敏感数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。以下是软件 ... [详细]
  • 1.关系型数据库永久性保存数据的仓库php的变量只是php脚本执行期间,临时性保存变量的空间【使用内存空间临时保存】关系型数据库:利用二者的关系来描述实体的信息。【利用二维表字段名 ... [详细]
  • PHP 扩展编译的通用方法
    2019独角兽企业重金招聘Python工程师标准以memcache扩展为例子首先需要到软件的官方(如memcached的地址http:pecl.php.netp ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • C盘无法格式化的原因及解决方法
    本文探讨了C盘无法格式化的原因,并提供了详细的解决方案,帮助用户顺利进行系统维护。 ... [详细]
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社区 版权所有