因此,我的应用程序允许用户上传视频,使用FFMPEG进行转换,然后将其传输到Flash Media Server。最近,我遇到了一个问题。
如果在转换视频时出现错误,我会自动生成cfcatch报告PDF。这一次,我遇到了“无法分配内存”错误。这让我非常担心,因为我即将推广我的系统,我不能让脚本在最初的几个小时内停止运行。
有没有办法解决ColdFusion的内存问题?我的意思是,一旦工作完成,我是否可以从本质上“重置”服务器正在使用的内存?
如果您了解潜在的灾难,我相信您会理解为什么我必须了解如何确保我的脚本正确执行。物理修复方法是重新启动服务器,但我显然不能每次用户上传视频时都重新启动服务器……
发布于 2012-12-13 00:32:46
很好的答案,但我不能让你的脚本工作,所以重新触摸,多大的不同!
<cfloop collection="#REQUEST#" item="mydex">
<cfset StructDelete(REQUEST, "#mydex#", "True")>
</cfloop>
<cfloop collection="#VARIABLES#" item="mydex">
<cfset StructDelete(VARIABLES, "#mydex#", "True")>
</cfloop>发布于 2010-08-11 01:13:51
我记得读到过一些服务器版本在页面请求完成时没有正确地处理COM对象和类似对象。如果这些操作是通过设置为变量的CFC或Java类完成的,那么可以将以下代码放在OnRequestEnd.cfm中
<cfset StructDelete(variables)>
<cfset StructDelete(request)>这将删除页面上设置的所有不再需要的变量。不应该有任何负面的副作用,并且应该清除在页面处理过程中可能仍然潜伏在变量集合中的任何内存。
您还可以考虑使用<cfexecute>以外的其他工具来处理视频。也许有一个后台进程,可以定期检查文件夹中的视频,然后在后台转换它们?当涉及到批处理时,ColdFusion不一定是高效的。
发布于 2010-07-29 03:41:36
我遇到过一些从CF中实际手动运行JVM垃圾收集的实例,通常是在有一个长时间运行的线程执行长期队列管理并且请求运行时间非常长的情况下。
在你的情况下可能值得一试。
要从CF中运行垃圾收集器,您可以调用以下代码:
<cfset runtime = CreateObject("java", "java.lang.Runtime").getRuntime()>
<cfset runtime.gc()>希望它能帮上忙!
https://stackoverflow.com/questions/3340064
复制相似问题