Podobnie jak @deceze, generalnie odpowiedź brzmi: nie. Jednak pamięci podręczne na poziomie systemu operacyjnego mogą buforować ostatnio używane pliki, aby uzyskać szybszy dostęp, ale nie liczę na to, że są dostępne. Jeśli chcesz buforować plik, który jest odczytywany wiele razy na żądanie, rozważ użycie zmiennej statycznej do działania jako pamięć podręczna w funkcji opakowania.
function my_file_read($filename) {
static $file_contents = array();
if (!isset($file_contents[$filename])) {
$file_contents[$filename] = file_get_contents($filename);
}
return $file_contents[$filename];
}
Wywołanie my_file_read ($ filename) wielokrotnie będzie czytać tylko plik z dysku jeden raz, kolejne wywołania odczyta wartość od statycznej zmiennej wewnątrz funkcji. Należy zauważyć, że nie należy liczyć na to podejście w przypadku dużych plików lub używanych tylko raz na stronę, ponieważ pamięć używana przez zmienną statyczną będzie obowiązywać do końca żądania. Utrzymywanie zawartości plików niepotrzebnie w statycznych zmiennych jest dobrym sposobem na uczynienie twojego skryptu świnią pamięci.
Krótka odpowiedź: nr – deceze
file_get_contents jest po prostu skrótem do fopen, fread, fclose itd. - więc wyobrażam sobie, że otwarcie wskaźnika pliku i freading go nie jest buforowany. – Jimbo
Czy istnieje funkcja odczytu plików w PHP, gdzie mogę wybrać '$ cache = true'? – silkfire