我正在使用imagick https://github.com/gographics/imagick用于在 http 处理程序中调整图像大小和裁剪图像的库。其中没有写任何东西/tmp
文件夹。但据我所知,该文件夹中正在创建许多此类文件,并且其大小每天都在增长,目前它消耗了大约 90% 的分区大小。此外,我也无法阅读他们的内容。那么,为什么要创建这些文件,它们会在一段时间后被删除还是我需要手动删除它们。
-rw------- 1 ubuntu ubuntu 16M Feb 22 09:46 magick-d6ascKJV
-rw------- 1 ubuntu ubuntu 16M Feb 22 09:46 magick-46ccZIfq
-rw------- 1 ubuntu ubuntu 1.8M Feb 22 09:47 magick-vUET7vyh
-rw------- 1 ubuntu ubuntu 1.8M Feb 22 09:47 magick-OLkGWTX8
-rw------- 1 ubuntu ubuntu 15M Feb 22 09:48 magick-LNMV7YvE
-rw------- 1 ubuntu ubuntu 16M Feb 22 09:49 magick-0LMYt6Kc
-rw------- 1 ubuntu ubuntu 16M Feb 22 09:50 magick-ceNxX5CY
-rw------- 1 ubuntu ubuntu 16M Feb 22 09:50 magick-nQ1M3y6I
Edit :
我没有在我的 http 处理程序中使用以下两行。原因是我找不到任何解释来这样做。此外,go http 处理程序工作正常。那么,这些言论的目的是什么?
imagick.Initialize()
defer imagick.Terminate()
我假设有一些理由将它们包含在代码中。所以,在 go http handler 中。它应该包含在里面的地方func main()
或里面serveHTTP
?
func main() {
myMux := http.NewServeMux()
myMux.HandleFunc("/", serveHTTP)
if err := http.ListenAndServe(":8085", myMux); err != nil {
logFatal("Error when starting or running http server: %v", err)
}
}
func serveHTTP(w http.ResponseWriter, r *http.Request) {
}
临时/中间文件应由调用 ImageMagick 线程自动清理。您描述的模式行为暗示了使用 ImageMagick 的应用程序中存在错误。
我会建议...
- 检查应用程序的错误日志。
- 评估调用代码的错误报告。
- 确保正确
imagick.Initialize
& imagick.Terminate
例程被调用
如果没有其他办法,请使用环境变量MAGICK_TMPDIR
控制 imagemagick 工件的写入位置。
Update
The imagick.Initialize
包裹底层MagickCoreGenesis http://www.imagemagick.org/api/magick.php#MagickCoreGenesis, and imagick.Terminate
the MagickCoreTerminus http://www.imagemagick.org/api/magick.php#MagickCoreTerminus常规。它们对于管理 ImageMagick 运行的环境非常重要。它们应该在处理任何 ImageMagick 任务的工作线程上调用,所以在您的情况下,serveHTTP
方法。但是,对每个 HTTP 请求执行此类例程并不是最佳选择,并且如果可能的话,应该评估附加条件。
func serveHTTP(w http.ResponseWriter, r *http.Request) {
// if request will do image work
imagick.Initialize()
defer imagick.Terminate()
// ... image methods ...
// end if
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)