Incluye SymLinks vs. PHP (rendimiento)

Incluye SymLinks vs. PHP (rendimiento)

¿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)

  1. leer archivo (en ext2+ los enlaces simbólicos se incluyen en el inodo, por lo tanto, solo una búsqueda)
  2. leer otro archivo
  3. ejecutar php

B)

  1. leer archivo
  2. ejecutar php
  3. leer otro archivo
  4. 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.

información relacionada