.png)
¿Cuál de estos 2 es más fácil/rápido de procesar para un servidor Linux que ejecuta Apache?
A) Un enlace simbólico que apunta a un archivo php:
file-sym.php ---> file-orig.php
B) Un archivo PHP ( file-inc.php
) que incluye otro archivo PHP ( file-orig.php
) así:
Contenido del archivo-inc.php
<?php
include('file-orig.php');
?>
¡Curioso si alguien ha realizado algún punto de referencia!
Respuesta1
Mi reacción visceral me dice que el enlace simbólico será más rápido, porque tendrás que leer menos datos al manejar el primer enlace de esa cadena. Sin embargo, no estoy seguro de que haya mucha diferencia; intente enviar a los dos a la banca para ver la diferencia.
A)
- leer archivo (en ext2+ los enlaces simbólicos se incluyen en el inodo, por lo tanto, solo una búsqueda)
- leer otro archivo
- ejecutar php
B)
- leer archivo
- ejecutar php
- leer otro archivo
- ejecutar php
Supongo que la variante include() es buena para los usuarios de Windows, ya que no pueden tener enlaces simbólicos en sus sistemas.
Respuesta2
Muchos administradores desactivan los enlaces simbólicos de Apache por motivos de seguridad y rendimiento.
Para fines de rendimiento, consulte esta página sobre el ajuste de Apache:http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Dondequiera que en su espacio URL no tenga Options FollowSymLinks, o tenga Options SymLinksIfOwnerMatch, Apache tendrá que realizar llamadas adicionales al sistema para verificar los enlaces simbólicos. Una llamada adicional por componente de nombre de archivo. Por ejemplo, si tuvieras:
<Directory />
DocumentRoot /www/htdocs
Options SymLinksIfOwnerMatch
</Directory>
y se realiza una solicitud para el URI /index.html. Luego Apache ejecutará lstat(2) en /www, /www/htdocs y /www/htdocs/index.html. Los resultados de estos lstats nunca se almacenan en caché, por lo que aparecerán en cada solicitud.
Puede ver cómo los enlaces simbólicos pueden ser un problema de rendimiento exponencial según su entorno y código.