SymLinks vs. PHP Inclui (desempenho)

1

Qual desses dois é mais fácil / mais rápido para um servidor Linux que executa o Apache?

A) Um link simbólico apontando para um arquivo php:

file-sym.php ---> file-orig.php

B) Um arquivo PHP ( file-inc.php ) incluindo outro arquivo PHP ( file-orig.php ) assim:

Conteúdo do arquivo-inc.php

<?php 
    include('file-orig.php'); 
?>

Curioso se alguém fez alguma referência!

    
por filip 21.12.2010 / 11:39

2 respostas

2

Minha reação intestinal me diz que o link simbólico será mais rápido, porque você terá que ler menos dados ao manipular o primeiro link dessa cadeia. Eu não tenho certeza se há muita diferença, tente fazer um benching dos dois para ver a diferença.

A)

  1. arquivo de leitura (no ext2 + os links simbólicos estão incluídos no inode, portanto, apenas uma busca)
  2. leia outro arquivo
  3. executar php

B)

  1. ler arquivo
  2. executar php
  3. leia outro arquivo
  4. executar php

A variante include () é boa para os usuários do Windows, eu acho, já que eles não podem ter links simbólicos em seus sistemas.

    
por 21.12.2010 / 12:50
1

Muitos administradores desabilitam links simbólicos do apache por razões de segurança e desempenho.

Para fins de desempenho, consulte esta página sobre o ajuste do apache: link

Wherever in your URL-space you do not have an Options FollowSymLinks, or you do have an Options SymLinksIfOwnerMatch Apache will have to issue extra system calls to check up on symlinks. One extra call per filename component. For example, if you had:

 <Directory />
 DocumentRoot /www/htdocs 
 Options SymLinksIfOwnerMatch
 </Directory>

and a request is made for the URI /index.html. Then Apache will perform lstat(2) on /www, /www/htdocs, and /www/htdocs/index.html. The results of these lstats are never cached, so they will occur on every single request.

Você pode ver como os links simbólicos podem ser um problema de desempenho exponencial dependendo do seu ambiente e código.

    
por 21.12.2010 / 20:00