首页 开发编程 正文

php怎么做架构 为什么php不适合做计算密集型业务

你就出现在哪里2、虎扑是怎样做PHP后台架构的?这样就能实现写优化.目前PHP的发展也早就今非昔比,都是用PHP或其他语言编写的框架和服务器PHP程序员不需要学习另外一门语言、也可以用PHP实现高并发、高可用、微服务架构,能够让用户运行真正的协程异步PHP,Swoole协程编程、并发编程、Swoft微服务、等技术都是成为一个中高级PH...

php怎么做架构,一个合适php架构师?

技术方面:多帮助队友解决问题,思考如何做到更好,高并发,高可用。

管理方面:知道如何带领团队做出成绩

各个方面全面发展吧,哪里需要你,你就出现在哪里

虎扑是怎样做PHP后台架构的?

如果一个版块一台服务器基本没啥压力。。

回帖一般不是很占用数据压力的,可以先写入缓存系统(如Redis),然后后台定时把Redis的数据批量插入MySQL,这样就能实现写优化.

目前PHP的发展也早就今非昔比,PHP7.4就快要出来了且加上了JIT特性;除了应用程序框架和CMS之外,过去几年PHP中的异步框架也开始兴起,比如Swoole、Swoft和ReactPHP等等,都是用PHP或其他语言编写的框架和服务器

PHP程序员不需要学习另外一门语言、也可以用PHP实现高并发、高可用、微服务架构,即时通信等,关键还省钱解约成本,能够让用户运行真正的协程异步PHP。

Swoole协程编程、并发编程、Swoft微服务、等技术都是成为一个中高级PHPer,架构师的必经之路,掌握这些比你做兼职的收入高好几倍了,为了帮助大家进阶中高级涨薪、

我为大家准备了一套精品福利!还可加入大牛学习圈子,分享tp,laravel,Swoole,Swoft微服务等教程,各种大牛都是3-8年PHP开发者,每天还有12年的架构师做讲解,助你进阶中高级PHP程序员,增值涨薪!需要可关注本头条号,并且发送私信:PHP在学习Swoole协程编程、并发编程、进阶PHP中高级,架构师的路上有技术问题的可在底部留言,探讨技术!!

为什么php不适合做计算密集型业务?

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

1.优点:开源 免费性 快捷性 [程序开发快,运行快,技术本身学习快]

1)跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N >= 10)

2)语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

3)目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

4)有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

5)有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

6)PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

7)有成熟的社区来支持PHP的开发。

8)目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

9)有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

10)使用成本低 (linux apache mysql php内核)

2.缺点

1)函数命名不规范 驼峰法和下滑线,传参位置不一 你知道的

2)单线程 ; PHP本身,一直以来php就是个单进程的程序;虽然php的pthreads扩展早就有了。但是它不够稳定,运行运行着就会莫名其妙的自己挂掉;php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个挂掉

3)核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。却少了这个使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的。这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善

4)只支持web开发,不方便做 .exe文件,不方便做桌面应用程序. 不方便做手机程序.

5)不适合做爬虫、自动运行脚本.科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。

6)后期维护困难。后期提速空间局限性较大。

在对PHP有一个大致的认识以后,我们来了解一下为什么说PHP慢?

PHP的慢是相对于C/C++级别的语言来说,事实上,PHP语言最初的设计,就不是用来解决计算密集型的应用场景。我们可以这样粗略理解为,PHP为了提升开发效率,而牺牲了执行效率。

我们知道PHP一个很大的特点,就是弱类型特性,也就是说,我可以随意定义一个变量,然后给它随意赋值为各种类型的数据。以一个int整型数字为例子,在C语言中:

int num = 200; // 通常是4字节

但是,如果是PHP定义了一个同样的变量,实际对应的存储结构则是:

这个结构体将会占据远比C变量多得多的内存,PHP中定义方式如下:

$a = 200; //这变量将实际占用对比C变量很多倍的存储空间。

其实对PHP来说,无论存储什么类型的数据,都是用上述“通杀”的结构体实现。为了兼容PHP程序员的变量类型“乱入”,PHP做到了对开发者的友好,但是对执行引擎很残酷。单个变量内存消耗可能还不明显,一旦用到PHP的数组等,则复杂度指数上升(数组的实现是HashTable)。然后,Zend引擎执行时,将这些PHP代码编译为opcode(PHP的中间字节码,格式有点类似于汇编),由Zend引擎逐行解释执行。

无论是字符串的连接操作,还是数组的简单修改等,几乎都是“PHP程序员一句话,Zend引擎跑断腿”的节奏。因此,同样的操作,对比C来说,PHP消耗了更多的CPU和内存等系统资源。除此之外,还有内存自动回收、变量类型判断等等,都会增加系统资源的消耗。

例如,我用纯PHP实现的快速排序函数和原生sort函数,排序10000个整型数字,来做一个耗时对比,结果如下:

原生的sort耗时3.44 ms,而我们自己实现的PHP函数sort则是68.79 ms。我们发现,两者执行效率差距巨大。我的测试方式,是计算函数执行前后的时间间隔,而不是整个PHP脚本从启动到结束的时间。PHP脚本启动和关闭过程,本身有着一系列的初始化和清理工作,也会占据不少的耗时。

通常情况下,PHP执行效率的排行是:

最快的是PHP语言结构(isset、echo等),PHP语言的一部分(它们根本不是函数)。

然后比较快的就是PHP的原生和拓展函数。PHP拓展,基于Zend API之上,用C实现的功能,执行效率和C /Java是属于同一个数量级的。

真正慢的就是,我们通过PHP自己写的代码和函数。例如,假如我们使用的比较重的纯PHP实现的框架,因为框架本身的模块很多,所以,会明显拖累语言层面的执行效率,同时占据更多的内存。(国内的Yaf框架,以拓展的方式实现,因此执行效率远快于纯PHP写的框架。

在一般情况下,我们并不推荐用过PHP实现逻辑复杂计算类型的功能,尤其是Web系统流量比较大的场景下。因此,PHP程序员应该对PHP的各种原生函数和各类拓展有一个比较广泛的了解,在具体的功能实现场景中,寻求更原生的解决方案(原生接口或者拓展),而不是自己写一堆复杂的PHP代码来实现这类型功能。

如果有足够的PHP拓展开发实力,将这类型业务功能重写为一个PHP拓展,也会大幅提升代码的执行效率。这是一个非常不错的方式,也被广泛应用PHP优化中。但是,自己编写的PHP业务拓展的缺点也很明显:

拓展开发耗时比较长,需求变更的时候修改也复杂,写得不好可能会影响Web服务稳定性。(例如,在Apache的worker模式下,多线程场景下挂掉,会影响同一个进程下的其他正常子线程。如果是多线程的Web模式,编写拓展还需要支持线程安全)

拓展在PHP版本升级的时候,可能需要做额外的兼容工作。

人员变动后的维护和接手成本也比较高。

实际上,在互联网一线企业中,更常见的解决方案,并非增加PHP拓展,而用C/C 独立写一个服务server,然后PHP通过socket和服务server通信来完成业务处理,并不将PHP本身和业务耦合在一起。

不过,Web服务大部分的性能瓶颈都在网络传输和其他服务server的耗时上(例如MySQL等),PHP执行的耗时在整体耗时的占用比例非常小,所以从业务角度来说,影响可能并不明显。

php中流行的rpc框架有哪些?

json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。

这种远程过程调用可以使用http作为传输协议,也可以使用其它传输协议,传输的内容是json消息体。

PHP架构师和全栈工程师哪个好一些?

首先,我们要明确什么是架构师,什么是全栈工程师。

架构师

架构师其实也是软件工程师,只是他和普通的程序员的工作重点不一样而已。

架构师更多的是从全局出发,在拿到一个项目的需求后,根据需求的具体内容进行分析,然后整理出最合理的解决方案。

例如:技术的选型,模块的划分,数据库的设计,系统框架的搭建等等。

我们常常说的架构师,其实都是指的后端架构师,因为服务器的系统复杂度相对较高,从最简单的研发框架、通信、授权等等,到读写分离、集群、领域、CQRS等等,都是架构师需要考虑的问题。

全栈工程师

全栈工程师其实是说的同时精通前后端技术的工程师,可以一个人完全从APP或PC前端程序到服务端程序的工程师。

对于大型的项目,很多是前端不太懂后端的技术,后端不太懂前端的技术,导致沟通的成本上升,这个时候,如果有全栈工程师的存在,就可以大大的降低沟通上的成本,提高效率。

小结

所以说,架构师和全栈工程师是不冲突的,你既可以是架构师,也可以是全栈工程师,这样,你在架构的时候,你的考虑的方案会更加周到,你在沟通的过程中会更加的顺利,当然,你也就可以一个人完全前端框架的搭建和后端框架的搭建。

然后说一下学习吧。

对于刚进入程序员行业的新人来说,可能会遇到好像你这种,觉得自己“好像什么都会了,没什么可以学习的了”的感觉。

如果你有这样的感觉了,那刚好说明了,你会的太少了。

因为,当你学习的内容越多,了解的知识面越广的时候,你会发现自己懂得太少了。

程序员的知识是一片海洋,当你说自己一眼能看到头的时候,说明你还在岸上,当你置身于海洋中的时候,你才能知道海有多大。

对于学习来说,我们有很多种方法,简单说一两种。

看书

看书是最直接的学习方式,有时候,去书店里面,看看书的名字,你就知道你有哪些不了解的知识了。

开放社区

开放社区是一个非常好的学习场所,这里有很多的解决方案,案例,组建等等,你可以看到应用的原理和源代码。

读源代码是一个非常好的提升方式,因为你可以从里面看到很多别人的架构思想。

技术交流论坛/博客

看博客,看论坛也能够很好的提升自己的方式,好像博客园里面,就有很多好的文章。

最后说一句,程序员是需要活到老学到老的职业。

本文转载自互联网,如有侵权,联系删除