>  기사  >  백엔드 개발  >  对于php内存释放问题

对于php内存释放问题

WBOY
WBOY원래의
2016-06-23 13:40:48986검색

      大家在使用PhpExcel类时,当打开一个比较大的excel数据文档,会出现Fatalerror: Allowed memorysize of 67108864 bytes exhausted (tried to allocate 27 bytes) in example/admin/add_mysql.php on line 50这样的错误,即页面内存已经耗尽。现在我来说一下解决办法:

     我想到的有两种,第一种就是扩大php可以使用的系内存:

   1、 在php.ini文件中,修改memory_limit:80M,数值有各自的实际情况决定。

   2、 在php文件中,直接使用in_set(”memory_limit”,”80M”)来修改内存限制。

以上情况仅适用于本地和虚拟主机,在一般的空间服务器或开发平台上基本上都不允许,下面我来说一下第二种,即尽可能减少该页面php执行所消耗的内存:

使用unset()语句。

1、释放变量:网上有许多的使用案例是用于变量,其实也是,但在这种情况下,当你unset一个变量后,它所占用的内存并没有返回给系统,而是被符号变量所占用,(详细可以百度,有很多解释的)。

2、  释放对象:尤其是使用phpexcel类时,读一个比较大的文件,其对象会占用中很大的内存,例如:


运行结果:


当我们使用unset后:


运行结果:


     Wow!,很惊讶吧,释放变量不会减少空间,但是释放对象却很明显,对比一下,整整少了33000000多个字节,希望能帮助大家解决问题,对于其中的原因我也不太清楚,希望大师可以解释解释。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.