.png)
Qual destes 2 é mais fácil/rápido para um servidor Linux executando o Apache processar?
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 para saber se alguém fez algum benchmark!
Responder1
Minha reação instintiva me diz que o link simbólico será mais rápido, porque você terá que ler menos dados ao lidar com o primeiro link dessa cadeia. Não tenho certeza se há muita diferença, tente colocar os dois no banco para ver a diferença.
A)
- arquivo de leitura (em ext2 + links simbólicos são incluídos no inode, portanto, apenas uma busca)
- leia outro arquivo
- execute php
B)
- ler arquivo
- execute php
- leia outro arquivo
- execute php
A variante include() é boa para usuários do Windows, eu acho, já que eles não podem ter links simbólicos em seus sistemas.
Responder2
Muitos administradores desativam os links simbólicos do Apache por motivos de segurança e desempenho.
Para fins de desempenho, consulte esta página sobre ajuste do Apache:http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Onde quer que em seu espaço de URL você não tenha um Options FollowSymLinks, ou você tenha um Options SymLinksIfOwnerMatch, o Apache terá que emitir chamadas extras do sistema para verificar os links simbólicos. Uma chamada extra por componente de nome de arquivo. Por exemplo, se você tivesse:
<Directory />
DocumentRoot /www/htdocs
Options SymLinksIfOwnerMatch
</Directory>
e é feita uma solicitação para o URI /index.html. Então o Apache executará lstat(2) em /www, /www/htdocs e /www/htdocs/index.html. Os resultados desses lstats nunca são armazenados em cache, portanto, ocorrerão em cada solicitação.
Você pode ver como os links simbólicos podem ser um problema de desempenho exponencial dependendo do seu ambiente e código.