我正在运行一个程序,每次执行时都会增加内存... 我从数据库获取链接并解析内容...
<?php
include "aa.php";
$ex="all_link";
$cd="crawled_link";
$sql="SELECT * FROM $ex";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$i=1;
$j=1;
$temp=0;
while($count > 0)
{
$sql="SELECT * FROM $ex where num='$i'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
$a=$rows['link'];
$sql="SELECT * FROM $cd where link='$a'";
$result1=mysql_query($sql);
$rows1=mysql_num_rows($result1);
flush();
if(!$rows1)
{
$cdurl=trim($rows['link']);
start_scan($cdurl);
}
else
{
}
$sql="SELECT * FROM $ex";
$result=mysql_query($sql);
$temp=mysql_num_rows($result);
$count=$temp-$i;
$i++;
flush();
}
mysql_close();
当它第一次执行时,内存为4 MB,之后它增加了25o,更大的是有任何方法可以摆脱它....
答案 0 :(得分:2)
释放内存:
使用unset()
,mysql_free_result()
或其他资源破坏函数(在变量后明确清除)时,会出现情况1。情境2隐式清除资源 - 任何离开范围的变量,即不再适用,都会被清除。最后,情境3隐式释放所有与脚本相关的资源。
请注意,您可以使用memory_get_usage
获取内存使用情况。一旦您使用unset
等释放了一些资源,您可以查看差异,这是一个示例:
echo memory_get_usage() . <br />;
unset(......);
unset(......);
unset(......);
echo memory_get_usage();
收听所有错误,无论大小
始终将PHP错误级别设置为最详细的级别E_ALL。人们常常没有意识到PHP正在输出关于未设置变量等的各种投诉,您可以通过清理代码来完全取消。在编辑php.ini文件时,它也有助于禁用所有不使用的扩展 - 否则它们只会占用内存。