应该提高内存问题之前,php数组有多大?

前端之家收集整理的这篇文章主要介绍了应该提高内存问题之前,php数组有多大?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们的应用程序目前的工作原理如下:
class myClass{

    private $names = array();

    function getNames($ids = array()){
         $lookup = array();

         foreach($ids as $id)
             if (!isset($this->names[$id]))
                $lookup[] = $id;

         if(!empty($lookup)){
              $result;//query database for names where id in $lookup
                      // now contains associative array of id => name pairs
              $this->names = array_merge($this->names,$result);
         }

         $result = array();
         foreach($ids as $id)
             $result[$id] = $this->names[$id];

         return $result;
    }
}

哪些工作正常,除了它(通常可以)导致几个查询(在这种情况下为400).

所以,我正在考虑简单地查询数据库,并使用数据库中的每个名称填充$this-> names数组.

但是我担心数据库中有多少条目应该开始担心内存呢? (数据库列是varchar(100))

你有多少记忆?您的服务在峰值访问时间通常支持多少并发用户?这些是相关的信息.没有他们任何答案是无用的.一般来说,这是通过负载测试容易解决的问题.然后找到瓶颈并进行优化.在这之前,只要让它工作(在理性之内).

但是…

如果你真的想知道你在看什么…

如果我们假设你没有存储多字节字符,你有400个名字* 100个字符(假设每个名字都最大限制你的char限制)…你正在看着〜40Kb的内存.似乎太小了,不用担心,不是吗?

显然,您将从PHP获取其他开销来保存数据结构本身.可以使用SplFixedArray而不是纯数组的数据结构更有效地存储东西吗?可能 – 但是你失去了高度优化的array_ *函数,否则你将不得不操纵列表.

用户将使用您计划在内存中缓冲的每个条目吗?如果你必须有他们的应用程序,它们并不重要,它们是多大的,是吗?保存大量不需要的内容不是一个好主意,只是因为.“您绝对不想做的一件事是在每个页面加载时查询数据库4000条记录.至少您需要将这些类型的事务放入内存存储(如memcached)或使用APC.

这个问题 – 像计算机科学中的大多数问题 – 只是一个受限制的最大化问题.它无法正确解决,除非您知道可用的变量.

原文链接:https://www.f2er.com/php/131652.html

猜你在找的PHP相关文章