[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вот задачка, мозговой штурм просто
Zeelov
В данном случае тему создал не для решения своей проблемы а для проверки сообразительности smile.gif Модеры не убирайте ее хотя бы сутки.
Нижеописанную задачку я решал 2 дня.

Задача:

У меня на хосте есть папка img. В ней файл 1210.jpg.
Я даю тебе ссылку на него http://site.ru/img/1210.jpg (могу дать даже нескольким)
В браузере фотка открывается. Но через 3 часа будет выдавать ошибку 404.
Спрашивается, почему так, если известно:
  • Никаких работ на сервере в целом не проводилось за эти 3 часа
  • Ничего не удалялось и не переименовывалось
  • Крон выключен как и любые др.планировщики/программы
  • В момент передачи ссылок никаких действий вообще не проводил с сайтом






Спустя 27 минут, 22 секунды (30.03.2010 - 15:35) waldicom написал(а):
Наводящие вопросы можно?
ModRewrite стоит? 3 часа - это релевантно?

Спустя 4 минуты, 54 секунды (30.03.2010 - 15:40) krasilich написал(а):
Через три часа 404 будет только для меня? Или для всех желающих посмотреть картинку?

Спустя 4 минуты, 46 секунд (30.03.2010 - 15:45) glock18 написал(а):
Браузер-зависимо?

Спустя 7 минут, 8 секунд (30.03.2010 - 15:52) Zeelov написал(а):
браузер любой. ссылка будет доступна для всех. IP независимо какой

Спустя 1 минута, 45 секунд (30.03.2010 - 15:54) Zeelov написал(а):
На самом деле что 3 часа, что 4, хоть все 12 часов. Суть одна - файл физически по ссылке существует всегда. Но адресуем только определенное время

Спустя 21 секунда (30.03.2010 - 15:54) waldicom написал(а):
А что насчет Modrewrite? Если стоит и обрабытывает входящую ссылку, то может быть в обработчике стоит такая мощная фича?

Спустя 2 минуты, 24 секунды (30.03.2010 - 15:56) Zeelov написал(а):
ModRewrite стандартно. Стоит. Ладно, действительно это решаемо с помощью ModRewrite. От этого задачка нисколько не легче

Спустя 42 секунды (30.03.2010 - 15:57) waldicom написал(а):
АГА! Где мой пирожок?

Спустя 49 секунд (30.03.2010 - 15:58) Guest написал(а):
ссылка http://site.ru/img/1210.jpg полностью валидна. Т.е. без всякого ЧПУ. в корне сайта папка img и именно там этот файл

Спустя 5 минут, 6 секунд (30.03.2010 - 16:03) Zeelov написал(а):
Т.е. я придумал как выдавать файлы без применения PHP с прямыми ссылками, но эти ссылки временны. Кстати еще подсказка: имя файла так же не случайно. точнее его часть. Ошибку 404 выдаст через правило htaccess

Спустя 2 минуты, 13 секунд (30.03.2010 - 16:05) Zeelov написал(а):
Я не знаю, наверное этот способ известен, но в сети его точно хрен найдешь. Опубликую его полностью со всеми примерами на habrahabr.ru. Но увы реги там у меня нету. Дал бы кто приглашение:)

Спустя 15 минут, 19 секунд (30.03.2010 - 16:21) waldicom написал(а):
Цитата (Zeelov @ 30.03.2010 - 15:05)
Я не знаю, наверное этот способ известен, но в сети его точно хрен найдешь. Опубликую его полностью со всеми примерами на habrahabr.ru. Но увы реги там у меня нету. Дал бы кто приглашение:)

Опубликуйте в песочнице...

Спустя 13 минут, 57 секунд (30.03.2010 - 16:35) Zeelov написал(а):
ладно опубликую на blogspot.com. Завтра только.

Ну как, все еще нету идей?smile.gif

Спустя 16 минут, 50 секунд (30.03.2010 - 16:51) waldicom написал(а):
Цитата (Zeelov @ 30.03.2010 - 15:35)
ладно опубликую на blogspot.com. Завтра только.

И ссылку сюда не забудте плиз smile.gif

Спустя 1 час, 53 минуты, 5 секунд (30.03.2010 - 18:44) Guest написал(а):
waldicom, окей:) вот адрес блога http://istina-ryadom.blogspot.com/

Спустя 2 часа, 20 минут, 5 секунд (30.03.2010 - 21:05) kirik написал(а):
Тема-пеар своего свежего бложика?

По вопросу - есть такие фишки в .htaccess как prepend_file и append_file. Так можно "препендить" php файл к отдаваемым картинкам и чекать время. Если истекло - exit (c 404 заголовком, если угодно).

Спустя 1 час, 11 секунд (30.03.2010 - 22:05) Zeelov написал(а):
Цитата (kirik @ 30.03.2010 - 18:05)
Тема-пеар своего свежего бложика?

По вопросу - есть такие фишки в .htaccess как prepend_file и append_file. Так можно "препендить" php файл к отдаваемым картинкам и чекать время. Если истекло - exit (c 404 заголовком, если угодно).

Причем тут пеар, я просто хочу узнать о других способах организации временных сылок без участия CGI.
Повторяю, никаких скриптов нету. Исползуется лишь один - в случае, когда время ссылки истекает, на него идет внутр.ссылка и скрипт "решает" продлить ли доступ данному юзеру или по каким то причинам отказать переслав на 404

Спустя 2 часа, 17 минут (31.03.2010 - 00:22) kirik написал(а):
Цитата (Zeelov @ 30.03.2010 - 14:05)
никаких скриптов нету. Исползуется лишь один - в случае, когда время ссылки истекает

Подозрительно wink.gif Чем мною описанный вариант не подходит под это? Скрипт тоже решает показывать ссылку или нет..

Спустя 6 часов, 55 минут, 38 секунд (31.03.2010 - 07:17) glock18 написал(а):
подозреваю, что в имени файла лежит дата, до каких пор показывать, или что-то релевантное.

Спустя 46 минут, 37 секунд (31.03.2010 - 08:04) Zeelov написал(а):
Цитата (kirik @ 30.03.2010 - 21:22)
Цитата (Zeelov @ 30.03.2010 - 14:05)
никаких скриптов нету. Исползуется лишь один - в случае, когда время ссылки истекает

Подозрительно wink.gif Чем мною описанный вариант не подходит под это? Скрипт тоже решает показывать ссылку или нет..

Не подходит тем, что каждый раз обращаясь к файлу запускается поток php интерпретатора:)

Цитата
подозреваю, что в имени файла лежит дата, до каких пор показывать, или что-то релевантное.


Ты прав smile.gif Но как ты организуеш проверку даты в htaccess? RewriteCond принимает переменные только с левой стороны а справа сверяет с шаблоном.

Спустя 13 часов, 54 минуты, 21 секунда (1.04.2010 - 21:58) Zeelov написал(а):
как и обещал расписал способ http://istina-ryadom.blogspot.com/2010/03/blog-post_499.html

Конечно он не идеален в чем то, но переменные прямые ссылки обеспечивает отлично

Спустя 22 часа, 34 минуты, 39 секунд (2.04.2010 - 20:33) kirik написал(а):
Zeelov
Спасибо что поделился! Есть интересные моменты, но ИМХО костыльность присутствует.

Если задача всего лишь "как защитить файлы от публикаций на сторонних сайтах" то это решается обычной проверкой %{HTTP_REFERER} в htaccess.

А если нужно ограничить доступ только к некоторым файлам, причем не длоя всех юзеров, то проще (и "гибче") отдавать их через скрипт, как ты и делал до этого. Не думаю что выполнение пхп скрипта будет больше грузить сервер чем выполнение такого объемного htaccess'a.
Это лишь мое ИМХО, на досуге подумаю по-больше над задачей, мож че придумается smile.gif

Спустя 53 минуты, 40 секунд (2.04.2010 - 21:27) Zeelov написал(а):
Цитата (kirik @ 2.04.2010 - 17:33)
Zeelov
Спасибо что поделился! Есть интересные моменты, но ИМХО костыльность присутствует.

Если задача всего лишь "как защитить файлы от публикаций на сторонних сайтах" то это решается обычной проверкой %{HTTP_REFERER} в htaccess.

А если нужно ограничить доступ только к некоторым файлам, причем не длоя всех юзеров, то проще (и "гибче") отдавать их через скрипт, как ты и делал до этого. Не думаю что выполнение пхп скрипта будет больше грузить сервер чем выполнение такого объемного htaccess'a.
Это лишь мое ИМХО, на досуге подумаю по-больше над задачей, мож че придумается smile.gif

Дело в том, что я сделал массив замен RewriteMap как можно меньше. Он читается на сколько я знаю единожды - с запуском/перезапуском сервера. Там не регулярки, быстрее происходит. Реализовал у себя, при переадресации на скрипт, скрипт переименует файл и после через себя выдает копию файла. Тем самым юзер не заметит подлинный файл или нет.
REFERER может дополнить данный инструмент, но его легко обойти. Кстати файлы, по которым идет поиск можно компилировать. Тогда поиск будет говорят еще быстрее

Спустя 3 минуты, 15 секунд (2.04.2010 - 21:30) Zeelov написал(а):
До этого была отдача через скрипт. Но отдающий скрипт для этого делал еще 2 запроса в базу.. а с учетом того, что скрипт создан для общения и просмотра фото не совсем приемлим. Может потом еще что придумаю

Спустя 5 часов, 55 минут, 12 секунд (3.04.2010 - 03:25) kirik написал(а):
Цитата (Zeelov @ 2.04.2010 - 13:30)
Но отдающий скрипт для этого делал еще 2 запроса в базу

Кэширование?

Спустя 4 часа, 15 минут, 2 секунды (3.04.2010 - 07:40) Zeelov написал(а):
Цитата (kirik @ 3.04.2010 - 00:25)
Цитата (Zeelov @ 2.04.2010 - 13:30)
Но отдающий скрипт для этого делал еще 2 запроса в базу

Кэширование?

Да нет. Фото приватные, видные только контактам-друзьям. Вот и проверял, друг ли просматривает:)

Спустя 14 часов, 37 минут, 50 секунд (3.04.2010 - 22:18) kirik написал(а):
Ну.. всмысле кэширование поможет избавиться от лишних запросов в БД smile.gif

Спустя 9 часов, 42 минуты, 30 секунд (4.04.2010 - 08:00) Zeelov написал(а):
Цитата (kirik @ 3.04.2010 - 19:18)
Ну.. всмысле кэширование поможет избавиться от лишних запросов в БД smile.gif

Именно! Ради этого и сделал:) Теперь вот задачка сложнее: разобраться с приватной перепиской. При отправке сообщения +1 индикатор Нового сообщения напротив его контакта, +1 Индикатор Новых сообщений из Группы Друзей (всего 2 группы: друзья и собеседники). А Тот заходит в переписку и обнуляет все эти датчики. Надо как то удержать этот шквал обращений в базу с обновлением "Новых сообщений"

Спустя 12 минут, 49 секунд (4.04.2010 - 08:13) kirik написал(а):
Кэширование? wink.gif

Спустя 7 часов, 6 минут, 44 секунды (4.04.2010 - 15:20) Zeelov написал(а):
Цитата (kirik @ 4.04.2010 - 05:13)
Кэширование? wink.gif

biggrin.gif Оно самое. Порой не столько проект думаешь, сколько над нужным кешированием. У меня оно везде. У каждого юзверя свои кешики. Зато щас все это оборачивается в среднем 5-6 запросами. 2 из них одинаковы для всех и кешируются)) Для своей соцсети думаю эт неплохо.
Пользуюсь случаем показываю небольшой обзорник того, ради чего вся эта головоломка - http://publa.moy.su/publ/1-1-0-7 . Через недельку сделаю зачетный обзор в блоге а не эту пустышку:)

Спустя 2 часа, 10 минут, 4 секунды (4.04.2010 - 17:30) kirik написал(а):
Цитата (Zeelov @ 4.04.2010 - 07:20)
среднем 5-6 запросами

Да, очень неплохо!
А какой вид кэширования используешь?

Спустя 15 часов, 19 минут, 58 секунд (5.04.2010 - 08:50) Zeelov написал(а):
Цитата (kirik @ 4.04.2010 - 14:30)
Цитата (Zeelov @ 4.04.2010 - 07:20)
среднем 5-6 запросами

Да, очень неплохо!
А какой вид кэширования используешь?

И это с учетом ведения статистики хостов и хитов:) + почасовая статистика.
Разные кэши: есть общие для всех, но их мало. В основном для каждого юзверя свои. Имеется у каждого своя папочка и тама складываются. Но кэши как правило.. онлайн, хранит только 1 символ. Чтобы лишний раз в базу не лезть за ним. Данные анкеты, административ.статус, данные текущей сессии, иии перевел туда результаты поиска. Не считая поиска весь объем кэшиком 2-3 килобайта на юзера. С учетом заливаемых фото, это мелоч
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.