我有一个网站,使用了很多常量,它们的定义如下,例如:
define('CONSTANT', 1)
我目前有大约 200 个这样的定义的列表。每次加载页面时都会运行此列表。这会严重影响我的性能或内存使用吗?
有理由避免在每次页面加载时列出 200 个常量,但性能和内存使用情况不在其中。一般来说,回答此类问题的最佳方法是运行基准测试。测量加载和不加载 200 个常量的页面加载时间和内存使用情况。测量几千次并查看数字。我怀疑你会发现微不足道的差异。微观优化通常是浪费时间。
我想不会。您的脚本有性能问题吗?如果没有,那就不用担心。如果是这样,那么您采取了哪些措施来确定瓶颈所在?
如果您需要知道包含和解析包含您的定义的文件需要多长时间,那么我建议您计时。
$start = microtime (true);
include ('file_to_include.php');
echo (microtime (true) - $start);
为什么要进行所有定义?如果您的流量很大,它可能只会减慢您的速度。如果您将它们全部使用,我可以看到减慢速度非常好。这是什么原因,也许有更好的方法(我从来不需要超过 5 个常量)
我认为它不会比读取包含 200 个常量的文件产生更大的影响,然后它又会被你的磁盘缓存优化。至少比从数据库读取200个常量要好。如果您确实关心性能,请安装操作缓存,因此,每次都不需要任何额外的解析。对于内存来说,它取决于常量的类型,但不会太多。
做吧,别担心。
<?php
$myfile = fopen("benchmark.php", "w") or die("Unable to open file!");
$txt = '<?php
';
$total = 1000;
for ($i = 1; $i <= $total; $i++) {
$txt .= 'define("const_' . $i . '","adfdsfdsf' . $i . 'adsfdf");
';
}
$txt .= 'define("foo","adfdsf");';
$txt .= 'echo foo;';
fwrite($myfile, $txt);
fclose($myfile);
A simple hello World
20,000 次每秒
$total = 1000;
19,000 次每秒
$total = 5000;
12,000 次每秒