АСѾԐД Создание и продвижение сайтов

Fast Site Engine

CMS для сайтов

Создать сайт

Карта сайта
Переходим на Линукс
Политика конфиденциальности
Сделать сайт на основе Fast Site Engine

Установка
Документация
Список изменений
Лицензионное соглашение

Скачать
О движкеОбо мнеДеятельностьПортфолиоКонтакты

Абсолютный путь 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'] перед открытием скрипта, это никак не экономия на спичках!
Признаться, когда всё это завертелось с написанием своего движка, о таких вещах не задумывался, стояли сроки создания сайта, соответственно приходилось максимально быстро решать вопросы, со временем всё это начало волновать и многое было переделано.





21.07.2026
21.8.7534 от С.М.З.Х.
Unix time: 1784615063
© Все права защищены 2004 - 2026