免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2157 | 回复: 17
打印 上一主题 下一主题

这个内存问题可能要请高手来解答了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-10 15:20 |只看该作者 |倒序浏览
系统:freebsd+apache+php


$Buff .=base64_encode($readbuff);
$readbuff为从30M的文件读出,$Buff初始为"",用top看这个php程序用了130M内存,这可以理解,因为函数处理字符串,当然要额外的内存倒来倒去的,但是当我处理几十个小文件,每个最多几百K,大小总共也是30M,每读一个文件用base64_encode($readbuff);处理后往$Buff里累加,居然也用了130M内存,这样可能就是在base64_encode处理每个文件后并未释放内存,每一次进去都要开辟新的内存,直到程序结束,这是为什么,怎么解决?我在网上搜寻了很久都没找到答案。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2004-12-10 16:00 |只看该作者

这个内存问题可能要请高手来解答了

用引用来操作看看如何呢?


$Buff .=&base64_encode(&$readbuff);

论坛徽章:
0
3 [报告]
发表于 2004-12-10 16:14 |只看该作者

这个内存问题可能要请高手来解答了

这样没试过,但看来这个引用与C语言中的引用不一样,因为我的函数用引用30M的变量传进去以后,就占了60M了,虽然在函数里能修改变量

论坛徽章:
0
4 [报告]
发表于 2004-12-10 16:31 |只看该作者

这个内存问题可能要请高手来解答了

不行,效果是一样的

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
5 [报告]
发表于 2004-12-10 16:40 |只看该作者

这个内存问题可能要请高手来解答了

那就没有什么好的办法了。

可能没有类似于java的垃圾回收机制吧

论坛徽章:
0
6 [报告]
发表于 2004-12-10 16:54 |只看该作者

这个内存问题可能要请高手来解答了

假如这样的话,我觉得不可思议,如果一个php程序在运行过程中反复进行耗操作,不是很容易把内存耗光??

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2004-12-10 17:22 |只看该作者

这个内存问题可能要请高手来解答了

但是php的配置php.ini,可以设置最大运行内存的哦,所以,你突破不了的啊

论坛徽章:
0
8 [报告]
发表于 2004-12-10 23:35 |只看该作者

这个内存问题可能要请高手来解答了

这一点我知道,但没有解决大量浪费内存的情况啊,特别是当用户较多时

论坛徽章:
0
9 [报告]
发表于 2004-12-11 02:09 |只看该作者

这个内存问题可能要请高手来解答了

PHP的垃圾回收机制要自己写的
再者,你用PHP处理这么大的文件就是错误的
应该用C/++处理,从PHP内EXEC()之

论坛徽章:
0
10 [报告]
发表于 2004-12-11 22:27 |只看该作者

这个内存问题可能要请高手来解答了

很想请教一下垃圾回收怎么写,bas64_encode是系统函数
不会吧,这也算大,何况是很多小文件,这种情况可能经常会碰到啊,不过用c语言倒是个解决的办法,不过挺麻烦,因为还需要把字符串传回来,这么捣腾开销可能又大了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP