Fast Site Engine
Высокопроизводительный движок для сайтов
Заказать сайт на основе движка
О движкеПроизводительностьБезопасностьТехнические требованияSEO 
Лицензионное соглашение
Демо
Установка
Панель управления
Модули
Документация
Шаблоны
Тесты производительности php
Планы на будущее
Список изменений
Отзывы и пожелания
Переходим на Линукс
Всякое разное
Тесты производительности php  »  Абсолютный путь php vs относительный

Абсолютный путь php vs относительный

Встречал на каком-то форуме вопящего эксперта по поводу того что абсолютный путь php практически не отличается по скорости, и мол используйте в php относительный путь к файлу и не заморачивайтесь, всё это экономия на спичках..
Как часто бывает товарищ не проявил здравомыслия и не опробовал этот момент на практике, давайте разберёмся почему абсолютный путь к файлу php лучше на фактах. Нам поможет в этом трасерт выполнения скрипта, смотрим что происходит при команде php include относительный путь:

lstat("/home/fsen/public_html/./tpl/inс/vars_ru.php", 0x7fffb2418ae0) = -1 ENOENT (No such file or directory)
lstat("/usr/lib/php/tpl/inс/vars_ru.php", 0x7fffb2418ae0) = -1 ENOENT (No such file or directory)
lstat("/usr/local/lib/php/tpl/inс/vars_ru.php", 0x7fffb2418ae0) = -1 ENOENT (No such file or directory)
stat("/home/fsen/public_html/inс/tpl/inс/vars_ru.php", {st_mode=S_IFREG|0644, st_size=306, ...}) = 0

Абсолютный путь однозначно лучше относительного!

Как мы можем увидеть php заменяет пути не с помощью особой магии, а физически проверяя существование файла по указанному php пути, причём не просто проверяя существование а пытаясь собрать блок данных из 14 свойств ищите в поисковике man lstat. При этом в случае пролёта относительного пути начинает искать сначала в библиотеках в попытке подгрузить, это связанно с подгрузкой классов из php библиотек. Таким образом имеем 3 пустых обращения к диску и на 4-й только успех, теперь перемножьте на добрый десяток другой этих путей во всём проекте. Спасает ситуацию только то, что результаты функции lstat кэшируются. Так что смело используйте $_SERVER['DOCUMENT_ROOT'] перед открытием скрипта, это никак не экономия на спичках!
Признаться когда всё это завертелось с написанием своего движка с десяток лет назад, я об таких вещах не задумывался, стояли сроки создания сайта, соответственно приходилось максимально быстро решать вопросы, со временем меня всё это начало волновать и многое было переделано, но php пути до сих пор остаются относительными. В следующей версии я несомненно заменю относительные пути на абсолютные.

Страница сгенерирована за 0.001474 секунды
На один процесс веб-сервера: 678 стр/сек.
Всего Apache может отдать: 173 568 стр/сек.
Выделено php памяти: 828.18 KB, real_usage: 2 MB

© Все права защищены 2004 - 2018
Карта сайта
Отслеживать изменения в Твиттере
Политика конфиденциальности

Браузер построил за сек.
Полное время сек.

С момента выгрузки предыдущей страницы из памяти браузера: сек.