Dado que include
evaluará el contenido de los archivos, p. ejecutar a través del intérprete de PHP y también utilizar el include_path para buscar archivos, yo diría que include
es más lento. file_get_contents
simplemente tratará el contenido de un archivo como una cadena. Menos sobrecarga, más velocidad.
Desde el manual page:
file_get_contents() es la forma preferida para leer el contenido de un archivo en una cadena. Utilizará técnicas de mapeo de memoria si es compatible con su sistema operativo para mejorar el rendimiento.
Sin embargo, si usted está después de la salida del archivo, en vez de conseguir en una cadena, readfile()
es incluso un poquito más rápido que file_get_contents
. Teniendo en cuenta que include
'producirá también cualquier contenido que no sea PHP, probablemente sea más probable lo que está buscando.
referencia revisado en mi máquina de escritorio:
$start1 = microtime(1);
for($i=0; $i<100000; $i++) {
include 'log.txt';
}
$end1 = microtime(1) - $start1;
y
$start2 = microtime(1);
for($i=0; $i<100000; $i++) {
echo file_get_contents('log.txt');
}
$end2 = microtime(1) - $start2;
y
$start3 = microtime(1);
for($i=0; $i<100000; $i++) {
readfile('log.txt');
}
$end3 = microtime(1) - $start3;
Resultado
echo PHP_EOL, $end1, // 137.577358961
PHP_EOL, $end2, // 136.229552984
PHP_EOL, $end3; // 136.849179029
Y entonces la gente dice que no hay problema con las etiquetas cortas ... –
Sí, odio los shortags, parece demasiado fácil desencadenar php por accidente como th e arriba ejemplo. –
Esto grita para el almacenamiento binario. ¿Qué tal comprimir los archivos para almacenarlos y descomprimirlos en la memoria? O, si está almacenando en caché toda la respuesta, enviando la copia comprimida? Eso evitaría las etiquetas cortas. Personalmente, apago etiquetas cortas cada vez que llego a php.ini. – TheJacobTaylor