【问题标题】:imagemagick doesn't delete tmp filesimagemagick 不会删除 tmp 文件
【发布时间】:2012-08-06 04:25:42
【问题描述】:

我有一个使用 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

知道是否有更好的方法在代码中执行此操作而不是 cronjob?

【问题讨论】:

  • 如果进程成功完成,ImageMagick 应该删除它自己的临时文件。如果它崩溃或 /tmp 中的空间不足,那么它将无法清理它们。 /tmp 中的 ImageMagick 文件的名称中应包含“Magick”或“ImageMagick”。 ImageMagick 中没有的其他任何东西

标签: imagemagick carrierwave rmagick


【解决方案1】:

截至 2013 年 1 月,没有删除临时文件的官方方法,因此 imagemagic 让您自己动手。我还使用了每 20 分钟运行一次的 cron 作业,因为临时文件的大小为 10+ GB。

【讨论】:

  • sudo find /tmp/ -name "magick-*" -type f -delete 这将完成这项工作,并将其发布为更好的可见性的答案
  • 我在 image magick 官方 repo @KuldeepDangi 中没有看到任何未解决的问题 - 如果您有任何信息,请分享他们是否正式隐式处理任何版本。
  • 最近有变化吗?
【解决方案2】:

这意味着您的 ImageMagick 安装不正常!

它在 tmp 中留下了 magick-* 文件的事实表明 ImageMagick 进程已经死亡,这就是它没有删除这些文件的原因。您应该配置内存限制等。请参阅http://www.imagemagick.org/script/resources.php

【讨论】:

    【解决方案3】:

    这个问题我有一段时间了,我的代码问题是我没有使用destroy函数:

    $im->destroy();
    

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

    【讨论】:

      【解决方案4】:

      最好使用基于任务的方法,而不是因为删除内容而阻塞运行时。只需每天运行一次任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        • 2021-12-10
        • 2013-12-12
        • 1970-01-01
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        相关资源
        最近更新 更多