PHP如何管理加载到内存中的函数?

时间:2017-12-30 21:55:03

标签: php laravel

我最近使用Laravel Framework开发了一个PHP项目。我想知道PHP的未使用的函数/方法是否被加载到内存中?我读到了解释语言的优点之一,他们有自动内存管理。但是,这还没有回答我是否加载的问题。这种自动内存管理是否处理上述情况?

我跑步时实际发生了什么:

php artisan serve

我的整个Laravel项目是否被加载到内存中?

如果是,那么作为开发人员,我是否有责任处理加载常用函数/方法?我如何决定存储位置或原则? (注意:您无需向我解释,只需将我重定向到手册)

如果不是,它在哪里存储其方法或功能(即缓存,交换到硬盘)?此外,它们是作为普通代码存储还是已被解释为已经进一步使用?

2 个答案:

答案 0 :(得分:7)

不,它不会全部加载到内存中!这是因为Laravel(像许多PHP库和框架一样)使用的Autoloader只加载处理请求所需的内容,并且仅在需要时才加载。

但是,如果您正在使用opcache,它会将字节码加载到opcache,并且在清除之前将保留在opcache中

答案 1 :(得分:2)

PHP是一个单行解释器,这意味着从文件顶部开始读取源代码,并且游标将文本解析为字节代码。

根据需要加载其他PHP源代码,因为正在运行的游标解释包括或触发类加载器。

生成的字节代码通常存储在opcache中,因此不会再次解释PHP文件。

当您对PHP文件进行更改时,Web服务器必须告诉opcache内容已更改,并且需要再次解释该文件。您可以将生产服务器配置为不执行此检查,以便提高性能。如果你有足够大的opcache,整个PHP应用程序(超时)都会加载到内存中。