2017-08-23 1 views
0

私のアプリでのメモリに関する問題があります。PHPによるメモリの問題

私のアプリは、解析して変換する必要があるapi(10MBのようなもの)からbig xmlを管理します。

時々、同時に複数のインスタンスが同時にメモリリークのためにクラッシュする場合があります。

私はunsetはメモリを解放しませんが、ガベージコレクションに移動されることは知っていますが、必要に応じて自由にすることはできますか?

<?php 
function test() { 
    $a = 100; 
    $b = 200; 
    $result = $a * $b; 

    return $result; 
} 

function test2() { 
    $a = 100; 
    $b = 200; 
    $result = $a * $b; 
    unset($a);unset($b); 
    return $result; 
} 

これは、必要な場合に任意の利点を生み出しますか?

+1

ローカル変数として$ aと$ bが関数が終了すると、ガベージコレクションに送信されるはずであるため、おそらく大きな違いはありません。実行中のPHPのバージョンは? – Devon

+2

xmlファイルをどのように解析していますか? XMLReaderのようなメモリ効率の高いプルパーサーを使用していますか? –

+0

SimpleXMLElementを使用しています... –

答えて

0

SimpleXMLの使用はお勧めしません。ドキュメント全体をメモリにロードします。

XMLReaderなど、SAXのようなものを使用します。

あなたが言いましたが「役に立たない」と言われました。 GCに仕事をさせてください。