【发布时间】:2011-10-24 01:44:27
【问题描述】:
我有一个 PHP 应用程序,它需要大型 2D 硬编码数据数组。我目前只是在一个脚本中定义了这个,该脚本包含在每个脚本执行的开头。
我想知道是否有人对此有更好的想法。
我的脚本如下所示。除了我有更多的行并且每行有更多的字段。
function getData() {
return array(
1 => array('name'=>'a something', 'price'=>123, 'field1'=>1, 'field2'=>3, 'field3'=>2),
2 => array('name'=>'b something', 'price'=>123, 'field1'=>3, 'field2'=>3, 'field3'=>2),
3 => array('name'=>'c something', 'price'=>234, 'field1'=>2, 'field2'=>3, 'field3'=>2),
4 => array('name'=>'d something', 'price'=>345, 'field1'=>8, 'field2'=>3, 'field3'=>2),
5 => array('name'=>'e something', 'price'=>655, 'field1'=>12, 'field2'=>3, 'field3'=>2),
6 => array('name'=>'f something', 'price'=>124, 'field1'=>11, 'field2'=>3, 'field3'=>2),
);
}
每一行都有相同的字段。所以它很像一个 DB 表结果集。我想我可以把它放在数据库表中,但我发现这个脚本更容易编辑,而且我认为它运行起来比查询数据库要快得多。
我目前的解决方案的问题是它可能很难阅读,因为有很多字段。我想要的是一个易于阅读和编辑的系统,但它也必须非常快。
数据库表会更好吗?或者也许从电子表格中读取 CSV 文件?
【问题讨论】:
-
如果它相对不变,为什么不用memcache?
-
其实memcache是个不错的选择。它不能解决可读性/可编辑性,但意味着我可以将数据放在电子表格/CSV 中,然后使用 memcache 快速处理。
-
@Jared Farrish:如果它相对不变,为什么要使用内存缓存?
-
@hakre - 我在考虑静态内存可用性,但现在考虑一下,这可能有点过头了(是的,memcache 是为动态数据构建的......)。在不知道数据的真实大小的情况下,可能很难知道将数据加载到内存中的其他方法是否“足够高效”。不过,我在想的是加载到内存中的时间。
-
@JaredFarrish: 如果你把它作为一个数组放入代码中,当代码执行时它已经被加载了:)