我知道PHP代码被编译到字节码中,并在每次运行时(即在每个页面请求上)重新执行。因此,引擎应该在每个请求中重新定义所有使用过的类、函数、变量等。
当使用像Laravel或CakePHP这样的全堆栈框架时,这也意味着在每个请求上都会重复执行相同的引导工作,比如解析配置文件、注册路由、自动加载类等等。
这似乎是非常不理想的处理这些东西的方式。甚至缓存,无论是OPcache还是框架缓存系统,都是不够有用的,因为脚本仍然需要执行。
另一方面,基于NodeJS或Ruby等引擎的应用程序在启动期间只编译和引导一次。因此,我认为它们应该比PHP具有更好的可伸缩性。
但是PHP是如此流行,甚至Facebook也在使用它。所以我想知道,对于一个可能会经历沉重负担的网站来说,什么是正确的选择?将PHP与全栈框架结合使用是个坏主意吗?
发布于 2015-02-24 16:20:37
我知道PHP代码被编译到字节码中,并在每次运行时(即在每个页面请求上)重新执行。因此,引擎应该在每个请求中重新定义所有使用过的类、函数、变量等。
从PHP5.5开始,默认为操作码缓存。在此之前,可以使用APC。您还可以使用类似于HHVM的东西,通过JIT编译进一步提高性能(PHP7将包括类似的改进)。
当使用像Laravel或CakePHP这样的全堆栈框架时,这也意味着在每个请求上都会重复执行相同的引导工作,比如解析配置文件、注册路由、自动加载类等等。
Laravel (我不能代表CakePHP)只在使用类时加载类--大多数类都不会加载在一个普通请求中。大多数关于使用更大的框架(如Symfony/Laravel )的偏执就是--偏执。
这似乎是非常不理想的处理这些东西的方式。甚至缓存,无论是OPcache还是框架缓存系统,都是不够有用的,因为脚本仍然需要执行。
Opcode缓存和框架缓存(文件、Redis等)提供巨大的好处,而你在这里是相当傲慢地拒绝。是的,每一个请求都需要执行代码(尽管这样的内容甚至可以减少)--但是对于任何语言和任何框架来说,这样的情况都是真的。
https://stackoverflow.com/questions/28700798
复制相似问题