Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SetInterval()泄漏内存,导致加载图像时出现问题_Php_Mysql_Actionscript 3_Setinterval_Memory Leaks - Fatal编程技术网

Php SetInterval()泄漏内存,导致加载图像时出现问题

Php SetInterval()泄漏内存,导致加载图像时出现问题,php,mysql,actionscript-3,setinterval,memory-leaks,Php,Mysql,Actionscript 3,Setinterval,Memory Leaks,我制作了一个flash应用程序,其中显示了连接到mysql数据库的php脚本中的9行(配置文件信息、图像)。此应用程序每3秒刷新一次(因为它已连接到数据库,需要刷新此脚本以查看任何更改,而不刷新整个页面) 第一个问题是,如果我删除此代码,图像将立即显示,但尺寸不同(这是一个问题)。 如果我添加这部分代码,图像将以正确的尺寸显示,但它们会在3秒钟内出现(这是另一个问题) 我想要的是,图像必须立即显示,并与设置的尺寸 第二个问题是SetInterval()正在泄漏一些内存:( 这是我的全部代码: i

我制作了一个flash应用程序,其中显示了连接到mysql数据库的php脚本中的9行(配置文件信息、图像)。此应用程序每3秒刷新一次(因为它已连接到数据库,需要刷新此脚本以查看任何更改,而不刷新整个页面)

第一个问题是,如果我删除此代码,图像将立即显示,但尺寸不同(这是一个问题)。 如果我添加这部分代码,图像将以正确的尺寸显示,但它们会在3秒钟内出现(这是另一个问题)

我想要的是,图像必须立即显示,并与设置的尺寸

第二个问题是
SetInterval()
正在泄漏一些内存:(

这是我的全部代码:

import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.sendToURL;
import flash.events.Event;

var req:URLRequest=new URLRequest("proyectos.php");
var loader:URLLoader = new URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.load(req);
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);

var myInterval = setInterval(loadedd, 3000);
setInterval(myInterval,0);

function loadedd() {

var req:URLRequest=new URLRequest("proyectos.php");
var loader:URLLoader = new URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
loader.load(req);
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);

}

function loadCompleteHandler(e:Event):void {
var variable:URLVariables=new URLVariables(e.target.data);
for (var i:int = 0; i <= 8; i++){

var clipname=this["Menuuser"+i]
this["foto"+i]=String(variable.foto[i]);
this["Menuuser"+i].nombre.text=String(variable.nombre[i]);
this["Menuuser"+i].nick.text=String(variable.nick[i]);
this["Menuuser"+i].email.text=String(variable.email[i]);
this["Menuuser"+i].aparea.text=String(variable.aparea[i]);
this["Menuuser"+i].motivos.text=String(variable.motivos[i]);
this["Menuuser"+i].comentario.text=String(variable.comentario[i]);
this["Menuuser"+i].fecha.text=String(variable.fecha);

var thumb:Loader = new Loader();
thumb.load(new URLRequest(this["foto"+i]));
//Here is the problem, when i put this code the images will appear in 3 seconds(i dont want that. But if i remove that part the images will be shown instantly(good) but it will appear with different dimensions(here the problem)

clipname.Main.addChild(thumb);
clipname.Main.width=200
clipname.Main.height=200
clipname.Main.x=clipname.Main.y=60

 }
}
导入flash.net.URLRequest;
导入flash.net.url变量;
导入flash.net.sendToURL;
导入flash.events.Event;
var-req:URLRequest=newurlrequest(“proyectos.php”);
变量加载器:URLLoader=新的URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
加载程序(req);
loader.addEventListener(Event.COMPLETE、loadCompleteHandler);
var myInterval=setInterval(loadedd,3000);
setInterval(myInterval,0);
函数loadedd(){
var-req:URLRequest=newurlrequest(“proyectos.php”);
变量加载器:URLLoader=新的URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
加载程序(req);
loader.addEventListener(Event.COMPLETE、loadCompleteHandler);
}
函数loadCompleteHandler(e:事件):void{
变量:URLVariables=新的URLVariables(e.target.data);
对于adobe建议的(var i:int=0;i)

<>而不是使用SET TIALVAL()方法,考虑创建一个具有指定间隔的定时器对象,使用0作为重复计数参数(设置定时器以无限期重复)。 如果要使用clearInterval()方法取消setInterval()调用,请确保将setInterval()调用分配给变量(clearInterval()函数稍后将引用该变量)。如果不调用clearInterval()函数取消setInterval()调用调用时,包含set timeout closure函数的对象将不会被垃圾收集

我运行了一个版本的setInterval,没有发现内存泄漏(显然没有使用
clearInterval()

我的结果如下:

运行1总内存:3837952

运行2总内存:4427776

运行3总内存:4427776

这将继续进行,不会出现内存泄漏。尽管考虑到其中包含错误,我不确定您的代码是如何运行的:

var myInterval = setInterval(loadedd, 3000);
setInterval(myInterval,0); //this line, setInterval params are function, delay, 
//you are passing setInterval "myInterval" which is actually of type uint
我怀疑“泄漏”可能来自错误代码

使用计时器的示例如下所示:

private var timer:Timer = new Timer( 3000, 0 );
timer.addEventListener( TimerEvent.TIMER, loadedd );
然后将Loaded()定义更改为:

function loadedd( e:TimerEvent )

至于图像的问题,我不太确定。

您已经做了哪些调试来确认
setInterval
是否出现内存泄漏?您是否已使用
系统检查过此问题。totalMemory
?上次检查时,应仍通过GC运行。我在浏览器上进行了测试,并使用Ctrl+Alt+Sup和绿色按钮进行了检查内存条已满。然后我关闭该窗口,绿色条正常。如果我不使用setInterval,内存不会泄漏。但是setInterval对mee来说太有用了,因为它刷新mysql的记录。在setInterval上取自adobe:
而不是使用setInterval()方法,考虑创建具有指定间隔的计时器对象,使用0作为重复计数参数(设置定时器以无限期重复)。如果您想使用CuffTimeValk()方法取消SET TIALVAL()调用,请确保将SET TIALVAL()调用分配给变量(即CurrTealValk()。如果您不调用clearInterval()函数来取消setInterval()调用,则包含set timeout closure函数的对象将不会被垃圾收集。
Bennett是的,我从adobe读到过,但是如果我使用clearInterval()自动刷新将停止工作。我还对System.totalMemory进行了测试,结果如下:124768256在1分钟内我将尝试快速安装,使用计时器是否有任何问题?现在刷新,我添加了timer.start();但内存仍在泄漏:/现在已修复,感谢Bennet:D,我还将设置间隔设置为100(每.1秒)图像立即显示。您解决了这两个问题。太好了!很高兴我能提供帮助。
private var timer:Timer = new Timer( 3000, 0 );
timer.addEventListener( TimerEvent.TIMER, loadedd );
function loadedd( e:TimerEvent )