Аццкое количество file_exists в скрипте. Нужен совет.

crocodile2u

http://vbolshov.org.ru
littleannika
У меня была похожая проблема, хотя фоток было гораздо меньше. Не могу сказать, что были прямо-таки нереальные тормоза, но, когда было много несуществующих фоток (в принципе, нормальная рабочая ситуация в моем случае) - file_exists() отжирали солидный процент времени. никакие риддиры не подходят, я даже не знаю, кому они вообще подойдут, если фоток хотя бы несколько тысяч - ведь нужно их раскидать по директориям.

Вот мое решение: RewriteCond + RewriteRule. Реврайт проверяет фотку на наличие и показывает no-image.gif, если фотки нету. Все стало работать очень быстро.
 

berkut

Новичок
crocodile2u
ого. а реврайт конд у тебя значит не вызывает file_exsits() а чудом работает?
 

crocodile2u

http://vbolshov.org.ru
berkut
Тут дело в другом. В PHP ты вызываешь файл_экзистс() - когда отрисовываешь картинку, и все эти "тормоза" аккумулируются в процессе обработки одного ХТТП-реквеста. В случае же мод_реврайта запрос на каждую картинку по отдельности обрабатывается сервером и ХТМЛ-страница генерируется гораздо быстрее. Более того, такое решение легко подвержено дальнейшей оптимизации: например, унести статику на отдельный сервер, обслуживаемый энджиниксом или лайтхттпд.
 

WP

^_^
=))))))) Феерично.
Открою маленький секрет, только никому не говорите. file_exists вообще никогда вызывать не надо! Надо заранее знать где тот или иной файл (брать из СУБД адрес фотки), если же файл нужно удалить, следует убрать о нем запись из СУБД.
 

kode

never knows best
Автор оригинала: WP
=))))))) Феерично.
Открою маленький секрет, только никому не говорите. file_exists вообще никогда вызывать не надо! Надо заранее знать где тот или иной файл (брать из СУБД адрес фотки), если же файл нужно удалить, следует убрать о нем запись из СУБД.
нульчую
 

crocodile2u

http://vbolshov.org.ru
WP молодец, возьми с полки пирожок. Только пост твой не в тему никаким боком.
 

Breeze

goshogun
Команда форума
Партнер клуба
альтернативный "скоростной" "временный" вариант: вообще оставить все как есть и добавить генерацию 4 файлов с результатами для разных видов сортировки. их и засасывать в скрипт, сменился результат, добавились фотки -- перегенерить =) и сделать эту функцию выключаемой, дабы в динамике по желанию смотреть.

а потом уже оптимизировать более основательно, как положено.
 

crocodile2u

http://vbolshov.org.ru
WP
Когда картинки заливаются и удаляются с сервера тысячами - админам удобнее это делать, минуя веб-интерфейс. Таким образом, теряется уверенность в том, что картинка существует - даже если по идее она должна быть. Твое решение прокатит для небольшого фотоальбома, но не годится там, где картинок много и нужна высокая отказоустойчивость (т. е. если фотки нет - нужно обязательно показывать картинку "нет фото" - даже если в базе записано, что картинка есть).
 

WP

^_^
crocodile2u
1. Тогда надо запускать сканнер который пройдется и удалит из БД ссылки на удаленные файлы.
2. Сделать на уровне веб-сервера показ другой картинки взамен.
3. Убить об стену таких админов которые не удаляют записи из БД. Тем более что можно интерфейс сделать очень похожий на ФС.
 

Gas

может по одной?
2. Сделать на уровне веб-сервера показ другой картинки взамен.
так crocodile2u это и предлогал, сканеры тоже имеют смысл, от задачи всё зависит.
 

crocodile2u

http://vbolshov.org.ru
WP
спасибо за советы, я как-то сам справляюсь неплохо. Ты же моих задач не знаешь, зачем советовать? Тем более, что совета спрашивала топик-стартер, а не я, и мой совет ей реально поможет.
 
Сверху