一般来说他们会选择两个架构来顺利完成他们要做的合作开发各项任务,而并非从0开始,避免多次重复造车轮。架构抽象化了很多常见的下层方式论,PCB了很多通用型又方便快捷的方式,让他们快速高效率地顺利完成各项任务。
架构都有甚么类别
只不过他们并并非必须要采用架构,有时采用原生植物PHP会更快,但假如你须要两个架构,那么从设计规模上有这种两个类别:
小型架构全栈架构模块架构辅助工具架构从运行方式上,又能分为这种两个架构:
面向全国Web的PHP-FPM架构面向全国Web的PHP-CLI架构面向全国其它情景的PHP-CLI架构你可能会想不通,怎么没有“面向全国其它情景的PHP-FPM架构呢?”,呵呵,PHP-FPM是专门针对用以处置Web的两个PHP化解方案,他本来是面向全国Web的,也根本无法面向全国Web。这也是有一部分人鼓吹的“PHP根本无法做Web”的论断,只不过是“PHP-FPM根本无法做Web”,PHP本身还是圣索弗和强大的。
甚么是小型架构呢?一般来说小型架构只会处置系统的出口处部分。比如说如今他们在Web合作开发中经常接触到的两个基本概念“路由器”,这种的小型架构会把HTTP允诺转贴到两个旋量群、驱动器或方式中,尽量的加快合作开发速度,假如有一天他们的URL要发生改变了,假如修正路由器方可,不需要修正主要业务的标识符位置。再比如说两个面向全国配置文件的架构,处置好了常见的命令操作和模块,让他们假如把核心方式论写好就能了。
甚么是全栈架构呢?这是相对于小型架构而言的,很多架构会在华硕架构的基础上加入很多功能,以企图化解方方面面的问题,比如说状态储存、资料库、内存、校正等等,这时他们就称它为全栈架构。两个举世闻名的特点是,那些架构一般来说会内建两个ORM。当然也并非大部份的全栈架构单厢内建ORM,可能会提及服务器端的库。但是他们都有两个共同的目标,是让自身的规范化国际标准尽量满足大部份情景。
甚么是模块架构呢?模块架构是有多个独立的库结合起来的,但此类架构仍然会提供两个标识符的组织规范化(标识符产品目录的放置国际标准等)。一般来说那些架构的模块,还能和其它架构一起采用。
甚么是辅助工具架构呢? 这是小贴士自己归纳的两个基本概念,此类架构是为了化解某两个情景的、完备度极高、但并不能直接采用的架构,只是顺利完成了这一情景中须要的更多的辅助工具。比如说两个通用前台管理工作架构、内容管理工作架构、食腐架构等,小贴士也会在后面介绍一些这种的项目。此类架构一般来说根本无法用以合作开发某两个专门针对的情景。
至于运行方式的这两个分类,只不过很好理解,一般来说现代的用以在PHP-FPM中运行的架构,也有办法从PHP-CLI中运行,比如说ThinkPHP提供了基于Swoole和Workerman的运行方式。也有一些专门针对在PHP-CLI中运行的面向全国Web的架构,那些架构既有小型的,也有全栈的,后面我们会介绍的。
除了Web还能有甚么情景呢?只不过PHP-CLI能够处置的情景很多,比如说长链接(物联网、聊天),多进程(食腐、采集、处置各项任务)、系统操作(数据迁移、系统监控)等等,后面会介绍到一两个PHP-CLI的架构。
有什么样架构
ThinkPHP,这是国内的很流行的两个合作开发架构,在国内的生态非常强大,很多前台管理工作架构都是给予它做的。
ThinkPHP算是两个全栈架构,但这并不代表它非常笨重,ThinkPHP是简洁实用的、注重性能的轻量级架构。小贴士一直很钟爱ThinkPHP,但是他也面临大部份国产开源项目的问题,贡献者太少,“伸手党”太多。或许等国内的商业和技术环境更快的时候,或者准备面向全国英文生态的时候,ThinkPHP的开源运作会提升两个层次。
ThinkPHP,既能在PHP-FPM中运行,也内建了基于PHP-CLI的运行方式,通过采用Swoole或Workerman的方式。
Laravel,这是目前最热门最流行的架构,似乎除了不好拼写以外,没甚么大的问题。
从开源运作上讲,处于非常高的层次(相对国内的开源项目来说),稳定的更新周期和技术支持,强大的社区生态,先进的编程思想,都是选择它的理由。Laravel是两个全栈架构,但同时也是两个重量级的架构,很多人诟病它的性能,但只不过小贴士认为这并并非甚么大的问题,PHP的运行有PHP的优化方案,重量级架构的问题在于大量的文件加载,通过PHP内存或者其它的运行方式(从PHP-CLI加载运行),性能问题并并非接受不了的。
Laravel,既能在PHP-FPM中运行,也有在PHP-CLI的化解方案,实际上运行Laravel的方式太多了,很多PHP-CLI的架构单厢提供运行Laravel的方案和例子。
Yii,这是国内生态中经典的强大的架构。
Yii是两个全栈架构,实际上他算是“真·全栈架构”,他在处置Web和CLI中都有丰富的辅助工具。
上面介绍的是两个国内比较热门的全栈架构,实际上全栈架构还有很多,这里不再一一列举,以后有的是机会。
Lumen,是基于Laravel的两个性能极快的小型架构。
相对Laravel而言,他更精简,但同时能通过扩展的方式,获得Laravel的大部份功能。
它是两个运行在PHP-FPM环境中的小型架构,但作为两个现代架构,也有很多PHP-CLI的运行方式。
webman,两个基于Workerman的小型架构。
webman仅提供了最核心的功能,比如说路由器、Session、中间件等,假如你须要更多的辅助工具,通过模块加载方可。他是基于Workerman合作开发的,这意味着他根本无法运行在PHP-CLI环境中。但这并并非甚么缺点,实际上,它Workerman的大部份功能,比如说自定义进程、进程守护、长链接服务器等。后面会介绍到Workerman。假如你希望找两个精悍简单的架构,webman非常合适。
EasySwoole,两个基于Swoole的全栈架构。
EasySwoole是基于Swoole合作开发的两个面向全国Web的架构,但是就像上面提到的webman一样,它基于swoole,意味着大部份那些swoole的特性它都有。并且提供了大量的辅助工具模块,那些辅助工具组件中有很多提供了协程支持。它不仅提供了大量的辅助工具,还提供了丰富的文档,或许你会爱上他。
imi,两个全栈架构,同时兼容多个运行环境(PHP-FPM、Swoole、Workerman、RoadRunner)。
imi是两个基于Swoole的架构,但新的版本并不完全依赖Swoole,就像上面讲的一样,同时兼容多个运行环境。作为两个全栈架构,他也提供了大量的辅助工具模块,其中包括很多协程的辅助工具。同时具备了Swoole的那些能力。目前架构也是十分活跃。
上面介绍了两个PHP-CLI的架构,这种的架构还有很多,以后有机会还会介绍。在介绍这两个项目时,你会时不时的看到Workerman、Swoole等字眼,是的下面就简单(真的很简单)介绍一下这两个架构。
Workerman,两个开源的高性能PHP容器。
它是两个PHP-CLI的架构,是两个PHP的容器,简单地说,他能替代PHP-FPM运行PHP标识符。Workerman在最近的性能测评中非常优秀,文档和生态也非常好。不论是并非有兴趣,都应该学习接触一下。这里不做太多介绍了,它的文档非常的友好,自己去体验快乐吧。
Swoole,两个PHP协程架构。
它是两个PHP-CLI的架构,是两个PHP的容器,简单地说,他能替代PHP-FPM运行PHP标识符。Swoole采用C扩展合作开发的,并且在国内也有很大的影响力。Swoole本身相对来说“比较下层”,衍生了一大批的架构。这里也不做太多介绍了,自己去探索吧。
ReactPHP,两个PHP事件驱动的下层库。
它是两个PHP-CLI的架构,是两个PHP的容器,简单地说,他能替代PHP-FPM运行PHP标识符。这个库在国外是非常流行的,之前小贴士介绍过两个纯PHP合作开发的Redis服务器,是用它合作开发的。他在国内不太普及,但是也是两个很强大的项目,比如说国外有两个PHP-PM,是用它合作开发的,用以运行laravel等架构,来提高运行速度。
Minicli,两个小型的PHP-CLI架构。
Minicli是两个PHP的配置文件的极简的架构,提供了两个简单地配置文件操作,并且提供了规范化的标识符加载,没有更多内建功能。
CLIFramework,两个PHP-CLI的全栈架构。
与上面介绍的Minicli不同,它提供的是一套大而全的配置文件应用架构:
能够实现各种类别的模块格式(长选项、短选项、必填、可选、默认值)分层命令命令模块自动提示等等。假如你须要两个健全的配置文件架构,那么能选择它。
关于辅助工具类架构
只不过小贴士说的辅助工具类架构,是化解特定情景的项目,比如说前台管理工作架构、内容管理工作架构,这里就不一一列举了,遍地都是,回头或许会做个专题来介绍整理一下。
但是这里要介绍两个有趣的辅助工具类架构,食腐架构。
Beanbun,是两个简单地可扩展的食腐架构,支持分布式、守护进程,采用Guzzle来做HTTP客户端。
他是基于Workerman的,专门针对用以做食腐的项目。它有以下特点:
支持守护进程与普通两种模式(守护进程模式只支持 Linux 服务器)默认采用 Guzzle 进行爬取支持分布式支持内存、Redis 等多种队列方式支持自定义URI过滤支持广度优先和深度优先两种爬取方式遵循 PSR-4 国际标准爬取网页分为多步,每步均支持自定义动作(如添加代理、修改 user-agent 等)灵活的扩展机制,可方便地为架构制作插件:自定义队列、自定义爬取方式…Beanbun相对来说比较精简,但是也提供了很多模块化解方案,那些你都能在它的文档中找到。
最后
以上是本文对架构的简单介绍,除了本文提到的那些外,还有许很多多的优秀的架构,这里没提到并并非说他们不好,而是小贴士还没有这种的能力去了解清楚。以后有机会再介绍。