PHP 数组消耗内存太多问题的解决方法

   一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。

  特别是在PHP作为后台服务器的系统中,经常会出现内存耗费太大的问题。

  因为这个是语言的问题,常规方案比较难以解决。下面是一种通过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变成一个数组。

时间: 2024-09-20 21:20:11

PHP 数组消耗内存太多问题的解决方法的相关文章

win7系统使用过程中总提示内存不足的原因及解决方法

  在使用win7系统的过程中,有时候会遇到一些常见的故障问题,比如有的用户反映在操作使用win7系统的时候,系统总弹出"计算机的内存不足"的提示.大部分用户遇到这种情况往往不懂得如何处理.其实只要我们了解系统提示内存不足的原因所在,就能找出解决该问题的方法.下面小编就跟大家分享关于win7系统使用过程中总提示内存不足的原因及解决方法! 一.系统提示"计算机内存不足"的原因: 1.系统运行太多的应用程序; 2.硬盘剩余空间太少; 3.系统"虚拟内存&quo

mongodb 对内存的严重占用以及解决方法【转载】

mongodb 对内存的严重占用以及解决方法[转载]  刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%.汗呀. 本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb占大量内存的问题的解决. 先看一个MongoDB服务器的top命令结果 shell> top -p $(pidof mongod) Mem:  32872124k total, 3006

window.location.href中url中数据量太大时的解决方法

 这篇文章主要为大家介绍下window.location.href中url中数据量太大时的解决方法,需要的朋友可以参考下 先说一下今天遇到的问题   一个导出excel的处理,在按钮按下后需要传很大一个数据到后台,刚开始的做法如下: 代码如下: var actionUrlSetData = "****Action!exportDatas.action"+ "?now=" + new Date().getTime(); window.location.href= ac

win7系统出现内存不足的原因和解决方法

  原因解析及解决方法: 原因一:同时运行过多的应用程序.系统内存大小是固定的,在同一时间运行程序过多会造成内存占用率大,从而使计算机内存不足. 解决方法: 1.在系统的任务栏空白处点击鼠标右键,然后选择"任务管理器"选项 2.打开"任务管理器"之后,点击"性能"选项就可以看到当前内存的使用情况 3.在"任务管理器"中点击"进程"选项卡,然后点击"内存"一栏,就可以看见每个程序使用内存的

魅蓝3s内存不足什么原因 手机内存不足安装软件失败解决方法

魅蓝3s内存不足安装软件失败解决方法: 1,一个是运行内存不足, 2,一种是存储空间不足,安装软件的时候提示内存不足,指的是系统内存. 解决办法 1.我们可以把手机中的QQ或微信先卸载掉,因为QQ与微信的数据文件会占很大空间我们使用工具是无法清理了,所以我们必须要删除这些软件之后会自动清除了,然后重新安装即可,这样两个合计一般情况下可以省出几个GB的内容哦.

Android 5.1 WebView内存泄漏问题及快速解决方法

问题背景 在排查项目内存泄漏过程中发现了一些由WebView引起的内存泄漏,经过测试发现该部分泄漏只会出现在android 5.1及以上的机型.虽然项目使用WebView的场景并不多,但秉承着一个泄漏都不放过的精神,我们肯定要把它给解决了. 遇到的问题 项目中使用WebView的页面主要在FAQ页面,问题也出现在多次进入退出时,发现内存占用大,GC频繁.使用LeakCanary观察发现有两个内存泄漏很频繁: 我们分析一下这两个泄漏: 从图一我们可以发现是WebView的ContentViewCo

w3wp.exe占用CPU和内存问题过高的解决方法_win服务器

今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的回收时间,默认为1720小时,可以根据情况修改.同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了.但仍然会出现个别网站因为程序问题,不能正确释放. 那么,怎么样才能找到是哪一个网站的? 1.在任务管理器中增加显示pid字段.就可以看到占用内存或者cpu最高的进程pid 2.在命令提示符下运行iisapp

安装4g内存只有2g可用的解决方法

很多同学在升级安装内存后,原本有4g的内存却只有3g甚至2g可用,这是什么原因呢?如果使用的是32位Win7操作系统,按理论是可以识别 3.25G内存,当然若使用的是集成显卡,可能这个数值可能还会更低.目前有网友反应,在自己电脑的"查看有关计算机的基本信息"里的"安装内存 4g(2g可用)".如下图: 我们可以看到,系统已经识别了4GB内存,那么初步判断硬件是没有问题的,问题出在系统上(该部分内存可能被系统自动设置成硬件保留内存了). 解决方法: 1.若安装系统为3

PHP数组内存耗用太多问题的解决方法_php技巧

因为这个是语言的问题,常规方案比较难以解决.下面是一种通过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