PHP 中的内存限制


   今天在做图片上传部分的工作,上传后的图片需要做处理,a机器上总报PHP内存耗尽的错误,检查了一下php.ini里面memory_limit 设置为16M,应该够用了吧,才处理2M的图片;后来检查了一下处理图片需要很大内存的,如果图片尺寸很大的话,即使图片占用空间不大,处理起来也很费内存的;2M的图片需要50多M的内存。
   但是奇怪的是,在b机器上处理图片就没有问题,而b机器上php.ini 的设置为:
   memory_limit = 8M ;
   这就奇怪了,然后使用 php -r "echo ini_get(‘memory_limit’);"  , 在 a机器上显示结果为: 16M ,在b机器上没有显示;
   于是,怀疑b机器上的
memory_limit没有生效;问了一下百度,才知道要是memory_limit生效,则PHP在编译的时候需要 –enable-memory-limit ; 于是查了一下a机器和b机器上的编译选项,都没有明确指定 –enable-memory-limit ;
   在用php -v 查看一下,
   a机器版本php 5.2.5
   b机器版本php 5.1.5
   大概是默认的编译选项不同吧! 看了一下PHP 5.2.5 的NEWS ,果然PHP 5.2.5默认是开启的,而PHP 5.1.5 默认是不开启的。

启发
   我们在给PHP添加内存限制是只是在php.ini中添加了 memory_limit 的设置,却没有验证是否达到了效果;
   这就教育我们做事要“善始善终”, 不能只是做完了就算完了,一定要想办法证明自己做的没有问题,否则事情就没有做完。

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据