首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用cfimage和cfxml时防止内存泄漏?

在使用cfimage和cfxml时防止内存泄漏?
EN

Stack Overflow用户
提问于 2012-08-24 12:20:12
回答 1查看 499关注 0票数 0

我正在用coldfusion8/mysql 5.0.88做一个网站,前端是Jquery。我还使用了photoswipe.js插件,它允许在一个单独的视图层中缩放和浏览图像。

要设置可扫描图像,我需要输出

代码语言:javascript
复制
<cfoutput>
<a class="swipeMe" rel="external" href="#variables.imageSrc#">
    <img src="#variables.imageSrc#" class="adaptImg ui-li-thumb" />
</a>
</cfoutput>

问题是imageSrc是由用户提供的,所以在显示图像之前,我必须抓取/验证/调整图像大小,并且我需要图像的路径以进行光擦除链接。

我已经对此进行了一段时间的修改,并提出了以下解决方案:

代码语言:javascript
复制
 // read img from user specs
 <cfimage name="myImage" source="#bildpfad##bilddateiname#" action="read" />
 <cfif IsImage(myImage) is true>
      // resize
      <cfscript>
           ImageSetAntialiasing(myImage,"on");
           variables.breite = 400;
           ImageScaleToFit(myImage, variables.breite,"", "highestPerformance");
      </cfscript>
      // write to xml, so I can get the path
      <cfxml variable="imageXml">
           <cfimage quality=".5" action="writetobrowser" source="#myImage#" class="adaptImg ui-li-thumb"/
      </cfxml>
      <cfset variables.imageSrc = imageXml.xmlRoot.xmlAttributes.src>
      // output
      <cfoutput>
         <a class="swipeMe" rel="external" href="#variables.imageSrc#">#imageXml#</a>
      </cfoutput>
 </cfif>

虽然它工作正常,但应用程序和内存似乎也出现了泄漏,因为在运行该程序时,我正在丢失越来越多的内存。

问题

上述代码是否存在导致内存泄漏的明显问题?我想象这些图像正在被写入某种临时目录(CFFileservelet?)在那里呆一段时间阻止我的记忆。如果是的话,在图像搜索中处理这个问题的替代方法是什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 13:27:07

为什么不直接在服务器上创建一个/tmp文件夹,并在那里编写被操纵的图像,比如:

代码语言:javascript
复制
<cfset newImageName=CreateUUID()&".jpg">
<cfimage action="write" destination="/tmp/#newImageName#" source="#myImage#">

然后你可以使用它:

代码语言:javascript
复制
  <cfoutput>
     <a class="swipeMe" rel="external" href="/tmp/#newImageName#"><img src="/tmp/#newImageName#" class="..."></a>
  </cfoutput>

删除临时文件的示例计划任务:

代码语言:javascript
复制
<cfdirectory action="LIST" directory="#expandpath('tmp/')#" name="tempfiles" filter="*.jpg">
<cfloop query="tempfiles">
    <cfif dateadd('h',24,dateLastModified) lt now()>
        <cffile action="DELETE" file="#expandpath('tmp/')##name#">
    </cfif>
</cfloop>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12109312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档