Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7930
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 14.12.2011, 03:00   #1
Saymon
Member
 
Аватар для Saymon
 
Регистрация: 06.01.2009
Сообщений: 45
Бабло: $8430
По умолчанию Хитрожопая отдача картинок. Плохо или нет?

Речь пойдет о картиночном хостинге. Есть кастомный движок. Готовый, завершенный. Мне достался как говорится as is.
Есть база картинок на несколько лямов. база в MySQL, но на достаточно оптимальной структуре, все работает достаточно быстро. Сами же картинки хранятся в древовидной структуре, где картинка с id=2 хранится вот так ***/images/00/00/00/00/02.jpg а если id=2345 то ***/images/00/00/00/23/45.jpg
Такую структуру хранения разработчики применили дабы не хранить больше 100 файлов в одной папке, аргументируя это соображениями по оптимизации нагрузки на ФС сервера. Движок заточен так, что по урлу blablabla.com/blabla/blabla/keyword.jpg реально отрабатывает php скрипт
Проект на Zend_Framework и сделано так что зендовый роутер воспринимает blabla/keyword.jpg как параметр/значение и в итоге отрабатывает определенный action конкретного контроллера, читает с винта файл картинки а потом делает echo, предварительно отослав нужные хедеры. то есть как бы урл похож на картинку, такое впечатление что реально урл картинки но отрабатывает пхп скрипт. И вот на данный момент (перед запуском) меня мучает только один вопрос:
А не создастся ли невъёбная нагрузка на php при большом кол-ве трафа? (100+кило дэйли)
Имели Вы дело с таким способом отдачи картинок? Какие-то грабли может есть в таком способе?
Просто если есть, то лучше перепилить пока не поздно, чем на горячую что-то править в лайве.
Короче надо конструктивную критику. Начинайте обсирать

oops, случайно не в той ветке создал.

Последний раз редактировалось Saymon; 14.12.2011 в 03:04. Причина: Случайно не в той ветке создал
Saymon вне форума  
Старый 14.12.2011, 03:50   #2
pepper
Senior Member
 
Регистрация: 04.06.2008
Сообщений: 467
Бабло: $171756
По умолчанию

В любом случае отдача самим сервером статики будет быстрее, если правда в php не заложена еще какая-то другая логика.
У nginx'a в хелпе есть даже пример конфига - HttpRewriteModule

PHP код:
rewrite  "/photos/([0-9] {2})([0-9] {2})([0-9] {2})" /path/to/photos/$1/$1$2/$1$2$3.png

при запросе
PHP код:
/photos/123456 
получится
PHP код:
/path/to/photos/12/1234/123456.png 
pepper вне форума  
Старый 15.12.2011, 00:23   #3
Saymon
Member
 
Аватар для Saymon
 
Регистрация: 06.01.2009
Сообщений: 45
Бабло: $8430
ТС -->
автор темы ТС По умолчанию

Спасибо. Еще есть вот такое решение X-Accel-Redirect и оно походу лучше подходит под мои условия. Вопрос решен.
Saymon вне форума  
Старый 15.12.2011, 00:43   #4
arma
Пионер
 
Аватар для arma
 
Регистрация: 21.12.2007
Сообщений: 197
Бабло: $37745
По умолчанию

Цитата:
Сообщение от Saymon Посмотреть сообщение
Просто если есть, то лучше перепилить пока не поздно, чем на горячую что-то править в лайве.
Проведи тесты и под нагрузкой посмотри сколько запросов в секунду будет держать. Тем более с указанным тобой методом результаты самого простого ApecheBenchmark теста будут близки к реальности.
__________________
arma вне форума  
Старый 15.12.2011, 04:03   #5
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
А не создастся ли невъёбная нагрузка на php при большом кол-ве трафа? (100+кило дэйли)
конечно, создается. И память апач у тебя будет безбожно потреблять, хотя зачем ему столько.

Цитата:
Имели Вы дело с таким способом отдачи картинок? Какие-то грабли может есть в таком способе?
имеют все ))
такая фича есть в любом движке(cms), но используется она в малонагруженных местах. Например, в админках для админа. Для сайта где ходит траф, тем более большой - статика полюбому. Всегда заставлял кодеров переделывать на вариант со статикой.

А если статика, выкидывай нахуй этот апач.
Offtopic

pepper предложил хороший вариант

а в идеале отдавать прям как есть. И кстати 100 файлов в папке - это мало, от 10к уже можно думать. см тут я тестил, правда не особо показательно, но все же
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 18.12.2011, 15:02   #6
Saymon
Member
 
Аватар для Saymon
 
Регистрация: 06.01.2009
Сообщений: 45
Бабло: $8430
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от chesser
pepper предложил хороший вариант
Бесспорно.
Цитата:
Сообщение от arma
Проведи тесты и под нагрузкой посмотри сколько запросов в секунду будет держать
Обязательно.

А точнее, я заюзаю то, что предложил pepper, ну только все таки именно X-Accel-Redirect и с этим делом проведу стресстестирование.

Цитата:
Сообщение от chesser
И кстати 100 файлов в папке - это мало, от 10к уже можно думать. см тут я тестил, правда не особо показательно, но все же
Ну вот тут имхо как раз таки показательно. 100 - 1000 разница по скорости больше, чем на порядок, теперь представим это все на серьезных нагрузках... хз хз. Мне кажется что 100 это верняк с которым точно в жопу не попадешь. С кило может да, а может и нет. От условий уже зависит, от железа и много еще от чего. Тут мало - как раз таки не есть плохо.
Saymon вне форума