Просмотр темы
Замена img_bb_code
|
|
mirivlad |
Опубликовано 01.11.2013 04:14
|
Пользователь Сообщений: 62 Зарегистрирован: 26.11.2010 00:34 |
На форуме одного из моих сайтов пользователи любят выкладывать в темы изображения со сторонних ресурсов. В Php-Fusion за отображение картинки с другого сервера отвечает bb-код Однако вылезла проблема. Если вставить в тему картинку большого размера с медленного сервера, то функция которая проверяет размер картинки удаленного файла - не успевает отработать так как скрипт отрубается сервером по timeout. Вариант с увеличением таймаута не подходит, так как время которое будет затрачено на получение картинки - неизвестно и может быть разным. Я решил эту проблему - получение заголовка картинки и определения content-type с помощью расширения curl. По сути - загружается не картинка, а только заголовок который отдает удаленный сервер. Из этого заголовка выясняется - на самом ли деле мы получаем картинку. Таким образом скорость загрузки страницы с большим количеством тяжелых картинок увеличивается в разы за счет того что мы получаем не всю картинку, а только заголовки. В аттаче измененный img_bb_code_includes. Куда распаковывать, думаю, знаете. AHTUNG! Перед тем как менять файлы - сделайте backup! Убедитесь что у вас установлено расширение PHP - curl.
mirivlad присоединено следующее:файл:
Изменил(а) mirivlad, 01.11.2013 06:00 |
|
|
mirivlad |
Опубликовано 01.11.2013 05:59
|
Пользователь Сообщений: 62 Зарегистрирован: 26.11.2010 00:34 |
Быстрофикс: Если вместо ответа сервера нам прилетит херня - заголовок не распарсится и скрипт аварийно завершался. FIX Если вместо картинки адрес ведет на страницу с редиректом на скрипт который генерит какую-либо линейку и прочюю картинку с меняющейся информацией - то скрипт не следовал за редиректами и картинка отображалась как неверная. В прицепе обновил архив. |
|
|
Polarfox |
Опубликовано 01.11.2013 07:27
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Можно послать заголовок в 1 байт на запрос серверу... быстрофикс это старый ббкод без извращений, имхо. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
mirivlad |
Опубликовано 01.11.2013 07:44
|
Пользователь Сообщений: 62 Зарегистрирован: 26.11.2010 00:34 |
PolarFox написал: Можно послать заголовок в 1 байт на запрос серверу... быстрофикс это старый ббкод без извращений, имхо. угу. старый код со старыми xss ^_^ Ты правда чтоли не понимаешь для чего сделана проверка - является ли то что юзверь ставит в bb-код урлом на картинку или нет? Просто во фьюженовском коде это сделано через жопу. Без выставления таймаута, со сверхпроверкой - получением всей картинки перед тем как определеить её mime-type |
|
|
SchreiBear |
Опубликовано 01.11.2013 09:14
|
Ветеран Сообщений: 625 Зарегистрирован: 05.01.2013 11:01 |
mirivlad, знаю как это решали другие... вощем при первом открытии картинки картинка заливаеться тебе на сервак дабы ускорить скорость остальных открытий... стоит на каждую картинку таймер к примеру на 3 для... по истичению 3 дней картинка стирается...но если на картинку хотябы раз в день бывает запрос таймер автоматически продливается ещё на один день. ну и там еше и проверка url стоит... которая проверяет есть ли воще картинка по данному адрессу...если нет выводиться своя... картинка отсуцтвует...ну или ч то то типо того. это решение проблемы стоит на www.germany.ru
Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
|
|
|
mirivlad |
Опубликовано 01.11.2013 09:23
|
Пользователь Сообщений: 62 Зарегистрирован: 26.11.2010 00:34 |
edmonsur написал: mirivlad, знаю как это решали другие... вощем при первом открытии картинки картинка заливаеться тебе на сервак дабы ускорить скорость остальных открытий... стоит на каждую картинку таймер к примеру на 3 для... по истичению 3 дней картинка стирается...но если на картинку хотябы раз в день бывает запрос таймер автоматически продливается ещё на один день. ну и там еше и проверка url стоит... которая проверяет есть ли воще картинка по данному адрессу...если нет выводиться своя... картинка отсуцтвует...ну или ч то то типо того. это решение проблемы стоит на www.germany.ru Это не везде будет корректно использовать. Данное решение имеет мааааленькую проблему, которая позже вырастет в большую. У меня например VDS сервер на SSD винте с 30 гигами места. Мне этого места катастрофически жалко. Увеличение доступно только при покупке другого ВДС. А вот канала и трафика мне не жалко - пускай гоняется. Главное чтобы медленные сервера не влияли на работу сайтов. |
|
|
Vova |
Опубликовано 01.11.2013 09:32
|
Ветеран Сообщений: 877 Зарегистрирован: 05.08.2011 11:53 |
Так проще. Не помню что быстрее curl, get_headers, fopen. Тестанул на картинке 8мб размером 5500 на 3000. Вроде быстро. Изменил(а) Vova, 01.11.2013 09:40 Мои сайты: ABCVG.com / Допомога учням / ГДЗ / 8Gamers - Игровой портал / Мониторинг CS / Мониторинг игровых серверов / Хостинг от ABCVG.net
|
|
|
SchreiBear |
Опубликовано 01.11.2013 09:35
|
Ветеран Сообщений: 625 Зарегистрирован: 05.01.2013 11:01 |
mirivlad, ну к примеру ...как ты выше написал возникает вариант с словом timeout то можно использовать мной приведёное решение в противном случии всё остается как есть... просто втыкнуть перемычьку и все... как дополнение к фьюженскому стандарту |
|
|
Polarfox |
Опубликовано 01.11.2013 11:07
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
реализацию покажи, я знаю что ббкод ущербен в плане обработки, нельзя ставить ничего кроме статики, твоя очередь.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |