gpt4 book ai didi

php - PHP 的 include 资源消耗大吗(特别是在迭代期间)?

转载 作者:IT王子 更新时间:2023-10-29 00:05:13 25 4
gpt4 key购买 nike

PHP 是否缓存 include 请求?我想知道如何清理我的代码,我考虑使用更多的 includes。考虑以下方案。

[foreach answer] [include answer.tpl.php] [/foreach]

这需要包含 answer.tpl.php 数百次。

它有缓存吗?它会对性能产生值得考虑的影响吗?这被认为是一种好的做法吗?不好吗?

回应@Aaron Murray 的回答

不,那行不通。 _once 的概念是防止多次包含同一个文件。 (以防止由例如覆盖常量值引起的错误)

实际示例如下所示:

# index.php
<?php
$array = array('a', 'b', 'c');

$output = '';

foreach($array as $e)
{
$output .= require_once 'test.php';
}

echo $output;

# test.php
<?php
return $e;

最佳答案

Does PHP cache include requests?

据我所知,PHP 默认不缓存包含。但是您的底层文件系统可能会这样做。因此,像您的示例一样一遍又一遍地访问同一个文件毕竟应该非常快。

如果遇到实际问题,您首先需要分析应用程序以找出实际瓶颈所在。因此,除非您还没有遇到任何问题,否则我会考虑使用 include not harmful。

关于良好实践,我认为这篇文章对此进行了很好的解释:When Flat PHP meets Symfony .

使您的代码更易于重用

这不是高级设计,只是为了展示如何开始使事物更加模块化的图片。您应该能够从您的包含文件中获取代码 1:1,只需注意将所有需要的模板变量传递给函数(不要为此使用全局变量,它迟早会妨碍您):

# in your answer.tpl.php

function answer_template(array $vars) {
extract($vars);
... your template code ...
}

# your script

array = array('a', 'b', 'c');

$output = '';

require('answer.tpl.php');

foreach($array as $e)
{
$output .= answer_template(compact('e'));
}

echo $output;

关于php - PHP 的 include 资源消耗大吗(特别是在迭代期间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com