php7卓越性能背后的原理有哪些? 财富值49

2016-08-19 08:18发布

PHP7卓越性能背后的原理有哪些?
10条回答
喷答主 @朱涵俊 说php没法常驻内存的人,是没理解答主的意思,看不下去了我要出来解释一波。本来想发评论下面的结果字数限制。。匿了
-------------------技术分割线------------------
99%的网站都会用到mvc架构,那php的框架是怎么工作的呢?首先网站根目录会一个apache的配置文件,也就是.htaccess,这个文件告诉apache将所有的请求重定向到index.php,也就是框架的入口文件,然后框架会根据url来匹配对应的路由,没错这一层就是MVC的Controller部分,然后如果路由匹配成功就会执行路由下面程序员写的业务逻辑代码,但业务里面是需要经常访问数据库的,如果一条一条的拼接sql语句那就太麻烦了,所以这时候就要把对数据库的操作按目的的封装成一个个可重用的模块,没错这一层就是MVC里面的Model层,然后通过Model拿到所需的数据后要呈现给用户啊,最后终于轮到View层出马了,view层是由程序员编写的网页模板文件和渲染引擎构成的,将参数和模板文件传给模板引擎,最后模板引擎将渲染完成后的html代码返回给apache,apache再将网页返回给用户的浏览器解析。

从用户点击一个链接到看到网页,也就一眨眼的功夫,没想到php经历了这么多~聪明的你发现了吗?用户每点一次链接,php都会从头从index.php入口文件开始执行,直到最后view渲染出页面~omg我大php表示我的心真的好累~

回到正题,答主一再强调“php每次都要从头执行代码!从头执行代码!从头执行代码!”,你们真的有听明白吗?

为什么说这点是php相比较其他语言慢的原因,你想想啊一个普通的php框架代码量再怎么也有2、3M吧,也就是说每收到一个请求php都会载入一次框架然后从头开始执行,还要执行程序员写的业务逻辑代码。但是java或者nodejs等就不一样了,这些语言写的网站也会用到框架,但是他们的代码和框架是常驻内存的,也就是说每次收到请求后直接就可以立即执行程序员的业务代码了,而不用像php那样要先载入框架controller层解析路由然后再载入model层解析模型代码最后再载入view层解析模板~

这虽然不是php相对较慢的主要原因,但这绝对是php相对其他语言效率较低的重要原因之一,这并不是php烂而是跟php的运行机制有很大原因,以言论仅代表个人立场。大概就这样,没事找事挑刺儿挑我语法问题的人请走开。

一周热门 更多>