下面的代码在一个循环中。每个循环将URL更改为新地址。我的问题是每次通过都会占用越来越多的内存。$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://site.ru/');curl_setopt($ch,CURLOPT_TIMEOUT,60);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_AUTOREFERER,'http://site.ru/');curl_setopt($ch,CURLOPT_HEADER,false);$html=new\D
我花了最后2个小时试图找出我的内存泄漏。优化了条令批量处理优化了我的分离和所有条令注释内容优化了SQL记录器脚本还在泄露决定注释掉日志记录,因为反正我也无能为力事实证明超过40k次迭代,没有记录每个n但在模数50,开始内存:28mb结束内存:30mb超过5k次迭代,每n次记录,无模数,起始内存:28mb,结束内存38mb。例子#thisleaks#startmem:28mbendmem:38mb,n=5kforeach($this->queryData->iterate()as$j=>$data):declare(ticks=1);self::$currentAd++;$this->e
我正在使用symfony2命令作为cron作业来向站点成员发送批量电子邮件。实际代码:$output->writeln('Before:'.(memory_get_usage()/1024/1024));$mailer->send($m);$output->writeln('After:'.(memory_get_usage()/1024/1024));我的结果:Before:182.38MBAfter:183.73MB每次我发送电子邮件时,swiftmailer都会额外消耗1+MB的内存。这似乎不对,但每次发送新消息时内存都会增加。我在这里做错了什么吗?
我已经用php编写了一个守护进程,并希望确保它不会泄漏内存,因为它将24/7全天候运行。即使是最简单的形式,守护进程的memory_get_peak_usage也会报告脚本在每个周期消耗更多内存。另一方面,memory_get_usage不会增长。问题是:我应该担心吗?我已经将守护进程剥离到最基本的部分,但这仍在发生。有什么想法吗?#!/usr/bin/php-q最后说明+结论:我最终编写了自己的守护进程包装器,而不是使用pear的system_daemon。不管我如何调整这个库,我都无法阻止它泄漏内存。希望这对其他人有帮助。最后说明+结论2:我的脚本已经投入生产一个多星期了,仍然没有
我试图避免PHP中的内存泄漏。当我创建一个对象并在最后取消设置时,它仍在内存中。未设置的看起来像:$obj=NULL;unset($obj);这仍然无济于事。我的问题是当我fork进程并且对象将在子线程中创建和销毁时会发生什么?这会一样吗?或者有什么其他方法可以释放内存吗?这是导入脚本,它将消耗几千兆内存。 最佳答案 PHP5.3有一个垃圾收集器,可以收集循环引用。可能值得一试:gc_enable();classA{publicfunction__construct(){$this->data=str_repeat("A",1024
我有一个在后台运行一段时间的PHP脚本(通常是几分钟,但也可能长达一个小时左右)。它包含一个循环,我需要在其中创建一个对象。我目前每次都使用相同的名称:while(!$job_finished){$x=newMyClass();$x->doStuff();$x->doMoreStuff();unset($x);//morecodehere}由于我用相同的名称重复创建$x,垃圾回收会正确清理内存吗?或者我应该在$x上使用一个数组,例如$x[$i]=newMyClass(); 最佳答案 其实我不需要用数组。unset()命令会破坏对象,
下面的代码在一个循环中。每个循环将$URI更改为新地址。我的问题是每次通过都会占用越来越多的内存。$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$URI);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_HEADER,0);$res=curl_exec($ch);curl_close($ch);我终于发现,如果我注释掉CURLOPT_RETURNTRANSFER行,泄漏就会停止。我使用“CURLOPT_RETURNTRANSFER,true”,这样我就可以
希望有人能帮我解决这个问题,有点难过。因此对图像和多边形进行了一些处理,但出现了奇怪的内存泄漏。所以我有一个名为canvas的包装器类,它只包含我的图像资源,另一个名为polygon的包装器类用于管理和操作另一个名为vertices的类,它只是x和y协调器数组的容器。非常直接。如果您使用此方法,即使在取消设置变量之后,图像资源的内存也不会返回,但如果您通常使用new关键字创建一个Polygon实例并取消设置它,那就没问题了。canvas类还有另一个称为destroy的方法:imagedestroy($this->canvas);所以使用这个:$img=newImage_Canvas($
我们的一个定期运行的脚本存在严重的内存泄漏,该脚本会迅速耗尽服务器上的可用内存。尽管进行了许多小时的研究和实验,但我什至无法对它产生任何影响。代码如下:echo'1:'.memory_get_usage()."\n";ini_set('memory_limit','1G');echo'2:'.memory_get_usage()."\n";$oXML=newDOMDocument();echo'3:'.memory_get_usage()."\n";$oXML->load('feed.xml');#556MBfileecho'4:'.memory_get_usage()."\n";$x
我在尝试使用PHP处理图像时遇到了麻烦。图像很好......大。总尺寸为23Mo的高清图片(36MP分辨率)。我正在对这张照片进行某些处理,例如调整它的大小或将其转换为灰度。问题是,当我在终端上使用htop查看内存使用情况时,我可以看到apache正在使用内存(略多于140Mb),但在图像处理结束时没有释放它。我一个一个删除了每个图像处理函数,现在只有这3行简单的代码,但漏洞仍然存在:$image=imagecreatefromstring(file_get_contents($imageFullPath));imagedestroy($image);unset($image);有人知