Od include
oceni zawartość plików, np. uruchom przez interpreter PHP, a także użyj include_path, aby znaleźć pliki, powiedziałbym, że include
jest wolniejszy. file_get_contents
potraktuje zawartość pliku jako ciąg. Mniejsze obciążenie, większa prędkość.
Z manual page:
file_get_contents() jest preferowanym sposobem odczytać zawartość pliku do łańcucha. Będzie korzystać z technik mapowania pamięci, jeśli jest obsługiwany przez system operacyjny w celu zwiększenia wydajności.
Jednakże, jeśli jesteś po wyprowadzanie pliku, zamiast się go na sznurku, readfile()
jest nawet odrobinę szybciej niż file_get_contents
. Zważywszy, że include
"będzie również wyprowadzać dowolne treści nie pochodzące z PHP, prawdopodobnie bardziej prawdopodobne jest to, że jesteś po, jak sądzę.
Revised odniesienia na moim komputerze stacjonarnym:
$start1 = microtime(1);
for($i=0; $i<100000; $i++) {
include 'log.txt';
}
$end1 = microtime(1) - $start1;
i
$start2 = microtime(1);
for($i=0; $i<100000; $i++) {
echo file_get_contents('log.txt');
}
$end2 = microtime(1) - $start2;
i
$start3 = microtime(1);
for($i=0; $i<100000; $i++) {
readfile('log.txt');
}
$end3 = microtime(1) - $start3;
Wynik
echo PHP_EOL, $end1, // 137.577358961
PHP_EOL, $end2, // 136.229552984
PHP_EOL, $end3; // 136.849179029
I potem ludzie mówią, że nie ma problemu z krótkimi tagami ... –
tak, nienawidzę shortagów, wydaje się zbyt łatwe do wywołania php przez przypadek jak e powyższy przykład. –
To krzyczy na pamięć binarną. Co powiesz na skompresowanie plików do przechowywania i rozpakowanie ich do pamięci? Lub, jeśli buforujesz całą odpowiedź, wysyłając spakowaną kopię? To pozwoliłoby uniknąć krótkich tagów. Osobiście wyłączam krótkie tagi za każdym razem, gdy dostaję się do php.ini. – TheJacobTaylor