如何处理由类的“新”方法生成的PHP中的内存泄漏

时间:2013-09-02 14:28:54

标签: php class memory

我在flie index.class.php创建了以下课程: -

<?php
class index{
        public function loadTitle() {
            $title = "Welcome to My Website";
            return $title;
        }
    }
?>

现在,我在我的index.php文件中使用它,如下所示

    <?php
        require_once("index.class.php");
        $obj = new index();
        echo $obj->loadTitle();
    ?>

我的问题是因为页面会变得很多,文章和图片很多,我每天都会想到1500-2500用户。

我是否还需要取消设置内存,我知道PHP有自己的垃圾收集器,但是关注URL会吓到我: - www.google.com/search?q=php+memory+leak+with+new

我在StackOverflow中看到一些问题,说它确实消耗了内存,某些人建议使用unset函数,但我不知道该怎么做..

这是我的尝试:

我是否只需要拨打

<?php
    unset($obj); // At the end of the page, or where i will no more be using this object.
?>

或者我也必须设置NULL值。

<?php
    $obj = NULL;
    unset($obj);
?>

以上代码是否适合释放内存,或者我是否还需要做其他事情?请建议并教我!

3 个答案:

答案 0 :(得分:3)

PHP具有自动垃圾回收功能。每次重新分配$obj时,如果旧值不再可访问,则将回收其内存。所以你只会引用一个对象,而不是你创建的所有对象,除非你将它们存储在某个地方。

答案 1 :(得分:1)

首先,您不需要一直取消设置变量。我看到人们在他们的PhP脚本末尾取消了所有变量,这是没用的。

你想要取消设置变量的唯一时间是你在PhP中遇到内存问题,你可以销毁你不会在脚本中的任何其他地方使用的变量,但你还有很多事情要做(考虑时间或记忆)。

您可能还想看看:

http://www.stackoverflow.com/questions/584960/whats-better-at-freeing-memory-with-php-unset-or-var-null

答案 2 :(得分:1)

您应该查看PHP的垃圾收集器。如果你愿意,你甚至可以强迫PHP收集垃圾:

<?php
gc_enable(); // Enable Garbage Collector
var_dump(gc_enabled()); // true
var_dump(gc_collect_cycles()); // # of elements cleaned up
gc_disable(); // Disable Garbage Collector
?>

来源:http://php.net/manual/en/features.gc.php