2016-04-25 13 views
0

私は狂った運転をしているのですが、なぜそれが起こっているのか理解できません。PHPは大きなファイルをキャッシュに書き出します

マイシステムは、16GB RAMのUbuntu 14.04です。

私は、次のコード

<?php 
$fp = fopen("http://...", 'r'); 

$write_pointer = fopen('test.bin', 'a'); 
while (!feof($fp)) 
{ 
    fwrite($write_pointer, stream_get_line($fp, 4096)); 
    fflush($write_pointer); 
} 
fclose($write_pointer); 
fclose($fp); 
?> 

でPHPスクリプトを持っていることは、HTTP(無限)から読み込み、ファイルに書き込みます。このファイルは非常に大きなファイルで、無限で40 GBものファイルにすることができます。

ディスク(RAM-Diskなどではなく)にファイル(test.bin)を書き込みます。

問題はCACHED RAM is being increased all the timeであり、1〜2日後にはキャッシュにのみ100%になります。

なぜこのようなことが起こっているのか説明できますか?そんなに多くのRAMを消費するのはなぜですか?

そして、私はバッファをクリアした場合でも、1~2日後に同じことが

が起こるかは、あなたがあなたの$write_pointerが開いていた時間の長さを追跡することによって、問題を回避することができますあなたの よろしく

+0

通常、PC上に高い「キャッシュRAM」を使用することをお勧めします。これは、ディスクにヒットするのを防ぐのに役立ちます。これは、パフォーマンスが大幅に低下する可能性があります。 –

+0

システムは、私がディスクに多くのデータを書き込むことを理解しており、これを防ぐためにRAMを使用していますか?私はそれを無効にしたい場合は? – OhGodWhy

+0

@MarcBが正しいと思います。 LinuxがRAMをどのように使用しているかに精通していない場合は、このサイトをチェックしてください。http://www.linuxatemyram.com/ – Machavity

答えて

0

ありがとうございました一定時間後に閉/再開を繰り返す。

0

RAMにファイルをキャッシュするLinuxカーネルの性質のために。 Linuxシステムでは、空きメモリーは常に0に近く、キャッシュは未使用メモリーの近くにあります。このコマンドでは、定期的にキャッシュをクリアすることができ :

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 

ご注意をプロセスがメモリをheaviliyがキャッシュメモリを使用する場合につながる可能性があるいくつかの状況で、それを再利用する際にソース状態キャッシュメモリの多くにもかかわらず、すぐに解放されていることメモリ不足からクラッシュし、それはLinuxのバグではなく、より悪い設計です。あなたのスワップが使用されていない場合は、空きメモリについて心配する必要はありません。 バッファとキャッシュを混同しないでください。バッファは書き込み中に使用され、読み込み用にキャッシュされます。

関連する問題