Home >Backend Development >PHP Tutorial >对于php内存释放有关问题
对于php内存释放问题
大家在使用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多个字节,希望能帮助大家解决问题,对于其中的原因我也不太清楚,希望大师可以解释解释。