扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。特别是在PHP作为后台服务器的系统中,经常会出现内存耗费太大的问题。
临沧网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联建站从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
因为这个是语言的问题,常规方案比较难以解决。下面是一种通过string 解决的方案。
复制代码 代码如下:
$total = 100000;
$double = "";
for ($i = 0; $i $total; $i++)
{
$double .= pack("d", $i + 0.1);
}
for ($i = 0; $i $total; $i++)
{
unpack("@" . ($i * 8) . "/d", $double);
}
这个例子用一个string 保存一个double 的数组。然后在使用的时候unpack出来。
当然,这会影响性能。要看具体的需求。
比如这样的情况下:
你有10个数组,每个数组10M (1百万数据左右),那么十个要花费 100M内存。
再加上10个人并发的话,内存就会严重不够了。
然后,在10个数组,不是每次都同时使用的。你可以,把他们保存成string
然后,在使用的时候,unpack某一个string变成一个数组。
神啊,数组存那么多数据你循环时服务器会抽风的。。。。
数组用来存储一定数量的数据,注意是一定数量。。。。
理论上是可以的,没试过。数组其实是在内存中的一块区域,计算机处理内存中的数据相对来讲最快的了,具体查找到某个值的速度取决于你的查找方法了,一般的查找方法是先排序再进行排查的。php自带的array函数速度就很快的,当然这么庞大的数据量很占系统资源的。
这里面更引响速度的应该是你把数据从文件中取出来的这个过程吧。
这个问题 应该这么说:如果定义的是一个简单类型的数组,例如:int my_int_array[100] ; 那么最多能够存放:100个元素,且每个元素的详细大小为:sizeof(int) ;数组的合法存取下标为:my_int_array[0] -- my_int_array[99],如果超过了这个范围,那么就会产生数组越界,程序就会出现错误了。
如果定义的是一个复合类型的数组,例如:结构数组。举例如下:
struct myself_datatype
{
char name[40] ;
int sex ;
int age ;
} myself_data ;
myself_data my_struct_array[100] ;
那么结构数组中的每一个元素所占的空间大小就是:sizeof(myself_data.name) + sizeof(myself_data.sex) + sizeof(myself_data.age) 。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流