我正在编写一个多语言网站的代码。每个页面的文本都是从MySQL数据库加载的,应该分配给一个数组或常量以将其插入到web内容中。
我想知道使用常量或数组来存储文本是否更好,以节省内存并获得最佳性能。即
foreach ($db_text_object as $t){
$text["$t->key"] = $t->text;
}
或:
foreach ($db_text_object as $t){
define($t->key, $t->text);
}
用作:
echo $text['mytext'];
或:
echo mytext;
关于每种方法的优点或缺点的任何其他评论都将受到赞赏。
谢谢。
我认为这两者都不会对性能产生重大影响,尤其是因为瓶颈是每次都从数据库中获取所有数据。如果你真的对它是否有影响感兴趣:尝试两种方法并衡量它
当你完成这项工作后,可以使用像gettext这样的本地扩展来正确地完成这项任务,gettext正是为了这个目的而制作的,它可以对二进制翻译文件进行内部缓存,并配有支持翻译工作流程的整个工具生态系统。
性能差异太小或太分钟
我个人喜欢数组,因为您可以用更简单的方式访问它。。
基准测试结果
<?php
$db_text_object=[1,2,3,4,5];
$start = microtime(true);
foreach ($db_text_object as $k=>$v){
$text[$k] = $v;
}
echo "Constant Performance: " . (microtime(true) - $start) . "'n";
$start = microtime(true);
foreach ($db_text_object as $k=>$v){
define($k, $v);
}
echo "Array Performance: " . (microtime(true) - $start) . "'n";
OUTPUT:
Constant Performance: 1.9073486328125E-5
Array Performance: 1.3113021850586E-5
CodeViper的基准测试演示