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 に答える