目前我正在将PHP脚本的配置存储在另一个PHP脚本中的变量和常量中(例如config.php
)。
因此,每次调用脚本时,它都包含配置脚本以访问变量/常量的值。 由于INI文件更容易被其他脚本解析,我考虑将配置的值存储在这样的文件中,并使用parse_ini_file()读取它。
在我的观点中,PHP将脚本文件保存在内存中,因此包含脚本文件(通常)不会导致IO(或者Zend是否进行缓存?或者根本没有缓存源?)。
如何阅读自定义INI文件。我知道.user.ini
有缓存(请参阅user_ini.cache_ttl
),但PHP是否也会缓存自定义INI文件?或者调用parse_ini_file()
是否会导致IO?
答案 0 :(得分:5)
加载配置指令所需的时间(不与应用程序执行这些指令所需的时间相同)通常可忽略不计 - 低于1毫秒最“合理大小”的配置。所以不要担心 - 在性能方面,INI,PHP或JSON都是同样好的选择。即使PHP比JSON快十倍,也就像加载0.001s而不是0.01s;很少有人会注意到。
也就是说,在决定存储配置数据的位置时,是注意事项。
require_once
简化PHP文件包含。PHP核心不进行缓存。期即可。也就是说,你永远不会单独使用PHP核心 :它将被加载为(快速)CGI,Apache模块等等。此外,您可能不会使用“准系统”安装,但您可能已经安装了几个模块(很可能是 )。
“loader”部分和“module”部分都可以进行缓存;他们这样做可能会导致不必要的重复或冲突,所以值得检查一下:
require_once
,则配置只会在需要时加载一次。这不是缓存,但它仍然是性能提升。通常情况下,根据某些配置指令,您必须执行几个非常简单的操作之一。然后,您将使用结果作为实际输出。
在这种情况下减慢工作流程的速度不是读取“config.layout”是“VERTICAL”还是“HORIZONTAL”,而是实际生成布局(或其他任何内容)。在这种情况下,您可以通过将生成的对象存储在某处来获得巨大的好处:
cache/config.layout.vertical.html.gz
)。如果布局发生更改,或者某种缓存失效过程,您可能需要部署某种“陈旧数据检查”。 (具体来说,对于布局,您可以查看Twig,它也可以进行参数化模板缓存。)您可能希望阅读有关client caching和标题的信息,并可能会探索您的托管提供的任何选项(负载均衡器,HTTP缓存,如Varnish等)。
答案 1 :(得分:0)
parse_ini_file()使用标准操作将文件转换为数组。