SymLinks против PHP-включений (производительность)

SymLinks против PHP-включений (производительность)

Какой из этих двух вариантов проще/быстрее обработает сервер Linux, работающий под управлением Apache?

А) Символическая ссылка, указывающая на php-файл:

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

Б) Файл PHP ( file-inc.php), включающий другой файл PHP ( file-orig.php), например:

Содержимое файла-inc.php

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

Интересно, проводил ли кто-нибудь какие-либо тесты!

решение1

Моя интуиция подсказывает мне, что симлинк будет быстрее, потому что вам придется читать меньше данных при работе с первым звеном в этой цепочке. Я не уверен, что есть большая разница, попробуйте сравнить эти два варианта, чтобы увидеть разницу.

А)

  1. прочитать файл (в ext2+ символические ссылки включены в inode, поэтому только один поиск)
  2. прочитать другой файл
  3. выполнить php

Б)

  1. прочитать файл
  2. выполнить php
  3. прочитать другой файл
  4. выполнить php

Полагаю, вариант include() подойдет пользователям Windows, поскольку в их системах не могут быть символические ссылки.

решение2

Многие администраторы отключают символические ссылки Apache из соображений безопасности и производительности.

Для повышения производительности, пожалуйста, просмотрите эту страницу по настройке Apache:http://httpd.apache.org/docs/2.2/misc/perf-tuning.html

Везде, где в вашем URL-пространстве нет Options FollowSymLinks или есть Options SymLinksIfOwnerMatch, Apache придется делать дополнительные системные вызовы для проверки символических ссылок. Один дополнительный вызов на компонент имени файла. Например, если у вас есть:

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

и делается запрос для URI /index.html. Затем Apache выполнит lstat(2) для /www, /www/htdocs и /www/htdocs/index.html. Результаты этих lstats никогда не кэшируются, поэтому они будут появляться при каждом запросе.

Вы можете видеть, как символические ссылки могут стать причиной экспоненциального снижения производительности в зависимости от вашей среды и кода.

Связанный контент