Сейчас складывается такая печальность, что эта функция в худшем случае может вызваться аж 4 раза (все из-за переносимости системы) из метода подгрузки, а он в свою очередь может вызываться... много раз. Вот и ищу теоретическую информацию про file_exists(). Чего лишний раз ваять не нужный код.Автор оригинала: newARTix
сдается мне, все зависит от дисковой подсистемы, файловой системы, ОС и структуры директорий (в порядке убывания важности). Хотя реально если у тебя больше 1000 файлов в одной директории - это часто становится причиной тормозов.
Любой "теоретический замер" измерит сферического коня в вакууме.
Есть подозрение что эта функция тормозит в конкретном проекте? Ну так надо измерить и узнать наверняка.
штабеля кодов по моему лично опыту получаются тогда, когда все пишется бездумно и в спешке. Если код грамотный и корректный, то можно простить и некоторые тормоза.Не думая, написать штабеля кодов
однако это не значит, что не надо ДУМАТЬ и УЧИТЫВАТЬ возможные проблемы.Не надо заниматься преждевременной оптимизацией
-~{}~ 15.09.10 16:08:These functions return information about a file. No permissions are required on the file itself, but -- in the case of stat() and lstat() -- execute (search) permission is required on all of the directories in path that lead to the file.
stat() stats the file pointed to by path and fills in buf.
lstat() is identical to stat(), except that if path is a symbolic link, then the link itself is stat-ed, not the file that it refers to.
Отлично! Вот это ценная информация!Автор оригинала: MiksIr
file_exist делает один сискол stat в файловую систему.
Влияние этого сискола может быть заметно только при дисковой системе на грани умирания с переполненной памятью в которой не осталось места для кеша.
При этом надо понимать, что пхп сам делает подобные сисколы на каждый подключаемый через include скрипт, причем по каждой директории пути, т.е. выглядит это так
lstat("/storage", {st_mode=S_IFDIR|0755, st_size=184, ...}) = 0
lstat("/storage/project", {st_mode=S_IFDIR|0750, st_size=1504, ...}) = 0
lstat("/storage/project/subproject", {st_mode=S_IFDIR|0755, st_size=512, ...}) = 0
lstat("/storage/project/subproject/src", {st_mode=S_IFDIR|0755, st_size=216, ...}) = 0
lstat("/storage/project/subproject/src/helpers", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
lstat("/storage/project/subproject/src/helpers/Helper.class.php", {st_mode=S_IFREG|0644, st_size=1986, ...}) = 0
open("/storage/project/subproject/src/helpers/Helper.class.php", O_RDONLY) = 12
По этому... твой вопрос не несет в себе всех полных данных для оценки влияния время выполнения одного stat вызова на все время работы скрипта.
-~{}~ 15.09.10 15:56:
Но в кратце - забей, скорость очень высокая, влияния на твой скрипт не окажет.