最近,我使用Laravel开发了一个PHP项目。我想知道PHP未使用的函数/方法是否加载到内存中?我读到解释语言的优点之一,他们有自动内存管理。然而,这并没有回答我的问题,即它们是否装载。这种自动内存管理是否处理上述情况?
当我跑步的时候,我的记忆发生了什么:
php artisan serve我的整个Laravel项目都被载入内存了吗?
如果是的话,作为一个开发人员,我是否有责任处理加载常用的函数/方法?而且,我如何决定将其存储在何处或基于哪些原则?(注:你不必向我解释这一切,只要把我转到手册上就行了)
如果不是,它在哪里存储其方法或函数(即缓存,交换到硬盘)?此外,它们是以普通代码存储,还是已经被解释为供进一步使用?
发布于 2017-12-30 22:01:47
不,不是全部都装进记忆里了!这是因为Laravel (像很多PHP库和框架一样)使用Autoloader,它只加载处理请求所需的内容,并且只在需要时加载。
但是,如果您正在使用opcache,它将将字节码加载到opcache中,并且一直保存在opcache中,直到清除为止。
发布于 2017-12-30 22:06:01
PHP是一个单程解释器,这意味着从文件顶部开始读取源代码,光标将解析文本向前移动到字节代码中。
当运行的游标解释、包含或触发类加载器时,会根据需要加载额外的PHP源代码。
生成的字节码通常存储在opcache中,这样就不会再次解释PHP文件。
当您对PHP文件进行更改时,web服务器必须告诉opcache内容已经更改,并且需要再次解释该文件。您可以将生产服务器配置为不执行此检查,从而提高性能。如果您有足够大的opcache,整个PHP应用程序(超时)将加载到内存中。
https://stackoverflow.com/questions/48038207
复制相似问题