2016-04-25 7 views
0

Ich habe ein Problem, das mich verrückt macht und ich kann nicht verstehen, warum es passiert.PHP Schreibe eine große Datei - Cache-RAM

Mein System ist Ubuntu 14.04 mit 16 GB RAM.

Ich habe einen PHP-Skript mit dem folgenden Code

<?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); 
?> 

Aus HTTP liest (endlos) und schreibt in eine Datei. Diese Datei kann eine sehr große sein, so viel wie 40 GB, da es endlos ist.

Ich schreibe die Datei (test.bin) in der Festplatte, nicht in einer RAM-Disk oder etwas.

Das Problem ist, dass die CACHED RAM is being increased all the time, und nach 1-2 Tagen geht es 100% nur in CACHED.

Kann mir jemand erklären, warum das passiert? Warum verbraucht es so viel RAM?

Und selbst wenn ich die Puffer zu löschen, nach 1-2 Tagen das Gleiche wird

Danke Grüße

+0

In der Regel möchten Sie eine hohe "Cache-RAM" -Benutzung auf einem PC sehen - es wird dazu beitragen, das Auftreffen auf die Festplatte zu verhindern, was ein großer Leistungseinbruch sein kann. –

+0

also das System versteht, dass ich viele Daten auf der Festplatte schreiben werde, und Ram verwendet, um dies zu verhindern? Und wenn ich es deaktivieren möchte? – OhGodWhy

+0

Ich denke @MarcB hat Recht. Wenn Sie nicht wissen, wie Linux RAM verwendet, überprüfen Sie diese Website http://www.linuxatemyram.com/ – Machavity

Antwort

0

Sie können das Problem umgehen, indem die Zeitdauer der Verfolgung Ihrer $write_pointer hat offen geschehen, und schließen/wieder öffnen nach einer bestimmten Zeit.

0

Aufgrund der Natur des Linux-Kernel, der Dateien im RAM zwischenspeichert. In einem gesunden Linux-System ist der freie Speicher immer in der Nähe von 0 und der Cache ist in der Nähe des nicht verwendeten Speichers. Sie können mit diesem Befehl Cache regelmäßig löschen:

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

Darauf achten, dass sofort trotz viel Speicher Quellen Zustand Cache freigegeben wird, wenn ein Prozess es reklamiert, in einigen Fällen, wenn der Speicher ist heaviliy im Cache-Speicher verwendet führen könnte aus dem Speicher stürzt ab, und es ist kein Linux-Bug, es ist mehr ein schlechtes Design. Wenn Ihr Swap nicht verwendet wird, müssen Sie sich keine Sorgen um freien Speicher machen. Verwechseln Sie Puffer nicht mit Caches. Puffer werden beim Schreiben verwendet, Caches zum Lesen.

Verwandte Themen