php内存在运行程序时正在增加

时间:2010-07-31 07:08:44

标签: php

我正在运行一个程序,每次执行时都会增加内存... 我从数据库获取链接并解析内容...

<?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,更大的是有任何方法可以摆脱它....

1 个答案:

答案 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文件时,它也有助于禁用所有不使用的扩展 - 否则它们只会占用内存。