ImageMagick无法删除临时文件。

6
我有一个应用程序,使用Carrierwave、S3和rmagci。大致遵循http://railscasts.com/episodes/253-carrierwave-file-uploads的方法,不过是上传到S3而不是本地。
我注意到在public/uploads/目录下的临时文件在图片创建后不会被删除。这会导致我的电脑空间随着时间推移而耗尽,并且崩溃。
我查找了一些信息,唯一的解决方案是编写一个cron作业来删除它们。http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=15960 请问是否有更好的方法可以在代码中处理这个问题而不是使用cron作业?

如果ImageMagick进程成功完成,则应该删除其自己的临时文件。如果它崩溃或在/tmp中空间不足,则无法清理它们。 /tmp中的ImageMagick文件名称应包含“Magick”或“ImageMagick”。其他任何内容都不是来自ImageMagick。 - fmw42
4个回答

6

截至2013年1月,没有官方的方法来删除临时文件,所以imagemagick只能让你自己来做。我还使用一个定时任务,每20分钟运行一次,因为临时文件大小超过10 GB。


4
这个命令是:sudo find /tmp/ -name "magick-*" -type f -delete。它可以完成你的任务,我已将其发布为答案以便更好地展示。 - Kuldeep Dangi
我在ImageMagick官方仓库中没有看到任何未解决的问题@KuldeepDangi - 如果他们正式地隐式处理任何版本,请分享相关信息。 - Raju akula
最近有改动吗? - Dave Doga Oz

5

这意味着您的ImageMagick安装未正常运行!

它在tmp中留下magick-*文件表明ImageMagick进程已经停止,因此它没有删除那些文件。您应该配置内存限制等。请参考http://www.imagemagick.org/script/resources.php


3

我有一个问题已经持续一段时间了,我的代码问题在于我没有使用destroy函数:

$im->destroy();

当调用destroy函数时,它将删除在/tmp目录下创建的临时文件。这是针对PHP的,也许会对某些人有所帮助。

1

最好采用基于任务的方法,不要在运行时删除东西。每天只运行一次任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接