2012-08-09 79 views
4

我有一个使用Carrierwave,S3和rmagci的应用程序。 或多或少跟在http://railscasts.com/episodes/253-carrierwave-file-uploads之后,但只是上传到S3而不是本地。imagemagick不会删除tmp文件

我注意到在创建图像后,public/uploads /中的临时文件不会被删除。这会导致我的电脑随着时间的推移而崩溃。

我环顾四周,我发现唯一的解决办法是写一个cron作业来删除它们http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=15960

,如果有更好的方法的代码,而不是一个cronjob要做到这一点任何想法?

回答

4

截至2013年1月,没有正式的方法来删除临时文件,因此imagemagic会让您自己去做。自从临时文件大小超过10 GB后,我还使用每20分钟运行一次的cron作业。

+1

如果你能分享这些命令,那将会很棒;) – codersofthedark 2014-12-01 11:02:32

+0

'sudo find/tmp/-name“magick- *”-type f -delete'这会完成这项工作,并且将它作为更好的答案发布能见度 – 2016-09-12 08:22:49

1

使用基于任务的方法总是更好,而不是通过删除东西来阻塞运行时。每天只运行一次任务。

5

这意味着您的ImageMagick安装无法正常工作!

它在tmp中保留magick- *文件的事实表明ImageMagick进程死了,这就是为什么它没有删除这些文件。您应该配置的内存限制等。参见http://www.imagemagick.org/script/resources.php

2

我有这个问题了一段时间,我的代码的问题是,我没有使用破坏功能:

$im->destroy(); 

当调用destroy功能,它将删除在/tmp目录下生成的临时文件。 这是PHP的,也许它会帮助别人。