1

我正在使用 codeigniter 和 PHP 来构建一个 Web 应用程序,并且由于我必须执行大量查询,我必须在模型内部定义/使用很多对象。有时我必须在循环中多次使用同一个对象,例如:

  $dbData = $this->mydb->query($dbQuery);
  if($dbData->num_rows() >0 ){ //check if rows were returned
     $dbResult = $dbData->result();
     foreach( $dbResult as $index => $row){
        $dbArray[$row->JOB_NAME_STG] = $row->REC_LOADED;
    }

在一般的编程实践中,一旦不再需要对象,您就应该将其无效,但我无法找到任何关于确保所有对象都无效的最佳方法的详细信息,从而避免一般的 codeigniter 或 php 的内存泄漏。

在函数末尾将 NULL 分配给对象是否足够?

$dbData = $this->mydb->query($dbQuery);
$dbData = NULL;

或者 codeigniter 有更有效的方法来确保没有内存泄漏。

在使用之前是否应该在循环内使对象无效以确保没有内存泄漏?

任何方向的指针将不胜感激。谢谢!!!

4

2 回答 2

0

在以下情况下分配null没有意义:

  1. php >= 5.3
  2. 几个小时都不能工作的应用程序

你符合以上两项吗?

于 2012-09-11T03:19:44.540 回答
0

unset() 应该从内存中释放变量或对象。但是,PHP 没有很好的垃圾收集功能。他们正在尝试使用 5.3 的新循环垃圾收集来改进它,但它仍然面临挑战。

于 2012-09-19T02:10:40.753 回答