2011-07-31 38 views
0

我使用PHP脚本来创建图像的缩略图,但此错误,同时创造一些大拇指被抛出PHP内存错误

top - 07:43:49 up 44 days, 22:21, 1 user, load average: 0.00, 0.00, 0.00 
Tasks: 171 total, 1 running, 170 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 6097648k total, 3459060k used, 2638588k free, 566924k buffers 
Swap: 4194296k total,  0k used, 4194296k free, 1991920k cached 

我的天堂”看着优化phpthumb代码。但是有没有其他方法可以释放已经使用过的内存?可以用cron作业来定期释放这些内存吗?

回答

0

您的图像可能大于〜10-15MB。 PHP对内存它可以占用每个脚本(memory_limitphp.ini

会发生什么事是你在内存中加载图像(然后调整其大小,创建第二图像)量的限制...

改变,如果你被允许,或者不加载这么大的图像内存限制... AFAIK没有流图像读取...

如果你不能改变的内存限制,解决方法可能会调用命令行ImageMagick或GraphicsMagick工具(如果它们已安装)...

+0

加载的图像从不> 200kb。我将内存限制从20MB增加到了30MB,这可以保持一段时间,然后错误再次显现!但我仍然想知道如何释放内存。 – Yeti

+0

内存限制不适用于系统,但对于单个PHP实例...您是否调整了多个图像的大小?也许你的脚本为每一个脚本分配内存并永远不释放它?没有看到你的脚本很难说。 – Carpetsmoker

+1

这不会显示任何代码,只是输出。这是没用的:) – Carpetsmoker

0

这是一个典型的php.ini问题,如果您在VPS或专用服务器上运行此脚本,请编辑php.ini文件并将memory_limit设置为99(或更多)MB,同时还要注意可停止的max_run_time x秒后的脚本。

不要忘了重新启动Apache的你已经做了更改后,

如果你是一个共享的服务器上运行这个,你可能有一些问题,试图解决这个问题,因为你不能编辑设置文件,您可以尝试在实际脚本中设置设置,但通常不会。

+0

这不是一个真正的解决方案,而是一个解决方法“moar memory nom nom nom nom”:-)相反,最好的解决方案是修复脚本,因为它使用更多的内存方式,然后它应该。 – Carpetsmoker