[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задачка на скачивание и сессии...
brdm
Подскажите please, кому не лень. Задачка на получение цифрового товара.

Допустим существует какой-либо файл в архиве и имеет конкретный линк на сервере.

Как на php выполнить так, чтобы после получения определенной ссылки на скачивание архива(которая должна формироваться автоматом, например на базе sid пользователя и естественно ни словом ни духом не напоминать реальный линк архива), пользователь смог-бы ее скачать один или два раза ( в случае сбоя). Или могла-бы существовать определенное время, например 24 минуты.
Потом эта ссылка должна стать недействительна?

Наверняка для этого можно использовать сессии. Но как?

Может кто уже писал, что-то подобное? Поделитесь, если можно.



Спустя 9 минут, 14 секунд (15.01.2009 - 20:44) Sylex написал(а):
в гугле по этой теме много ссылок есть

вот, например:
http://www.ruscript.net/scripts/121/

Спустя 1 час, 2 минуты (15.01.2009 - 21:46) brdm написал(а):
Спасибо.

Хорошая статья. База данных - сложновато это все. Хотя для фильмов, которых куча, может и оправдано.

Может как-ниудь на простом текстовом файле это организовать, с использованием сессии и ее id?

Мне - бы сам принцип, как это делается оптимально.

Спустя 13 минут, 16 секунд (15.01.2009 - 21:59) sergeiss написал(а):
Цитата (brdm @ 15.01.2009 - 21:46)
Спасибо.

Хорошая статья. База данных - сложновато это все. Хотя для фильмов, которых куча, может и оправдано.

Может как-ниудь на простом текстовом файле это организовать, с использованием сессии и ее id?

Мне - бы сам принцип, как это делается оптимально.

БД - это и есть наиболее оптимально.

Спустя 24 минуты, 6 секунд (15.01.2009 - 22:24) brdm написал(а):
Позвольте с Вами не согласиться. БД не пользуюсь и другим не советую. Практически все можно делать без баз. Будет быстрее и надежнее.

Сам пока в этом новичок, но разницу чувствую, так-же как неоправданное повсеместное использование ООП.

Примером тому скрипты Ласто.

Спустя 9 минут, 43 секунды (15.01.2009 - 22:33) kirik написал(а):
brdm, именно потому что вы новичек, поэтому и не понимаете смысла использования баз =)
Приведите пример, чем БД при грамотном использовании хуже файлов?
Я в свою очередь приведу пример, чем базы данных лучше.
1. База будет работать быстрее файлов при разборе данных, потому как MySQL написан на C, а вы производите разбор данных при момощи PHP.
2. Когда у вас сложная структура данных (вы потом столкнетесь с этим) и нужно вывести их определенным способом, - в большинстве случаев это будет не возможно реализовать на обычных файлах (или это потребует написаня собственной БД).
Это 2 основных аргумента, чем БД лучше файлов.

Конечно, для небольших проектов (типа гостевой книги) можно использовать и файлы, но если есть рабочий MySQL сервер, то без раздумий стоит напрячь его.

Спустя 15 минут, 6 секунд (15.01.2009 - 22:48) FatCat написал(а):
Цитата (kirik @ 15.01.2009 - 22:33)
Это 2 основных аргумента

Приведу третий аргумент, для меня более значимый.
Настройки стандартного шаред-хостинга включают:
Код
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Впрочем, цифры могут быть другими, важен сам принцип: есть лимит максимального количества обращений к файлам за единицу времени.

Хранение динамической информации в sql позволяет вдвое уменьшить число запросов к файлам, и соответственно удвоить пропускную способность сервера.
Например, на нашем движке это на сегодня самое узкое место...

Спустя 1 час, 55 минут, 53 секунды (16.01.2009 - 00:44) Guest написал(а):
Не убедительно.

Против Вас тоже можно привести много примеров.
WordPress работает на базе. Но это не скрипт, а кошмар на улице вязов.
Еще раз... посмотрите скрипты от Ласто lasto.com и все станет на свои места.

Куча потраченного времени на обращение к базе при грамотном использовании может быть заменена на другое более быстрое с тем же объемом информации.

Я хоть и новичок, но я новичок в php. А так я программист электронщик VHDL, С++.

Что не есть хорошо, понимаю хорошо.

База - это не есть хорошо для большинства малых и средних проектов.
Если на базе некоторые артисты еще и страницы сайта или блога формируют, то это вообще гайка.

Спустя 8 минут, 56 секунд (16.01.2009 - 00:53) FatCat написал(а):
Цитата (Guest @ 16.01.2009 - 00:44)
WordPress работает на базе. Но это не скрипт, а кошмар на улице вязов.

Дурные реализации хорошей идеи никак не снижают достоинства самой идеи.

ИМХО, для разных задач лучше подходят разные инструменты. Никому не придет в голову ампутировать бедро глазным скальпелем или оперировать глаз большим анатомическим ножом. Так и тут...

Спустя 1 час, 24 минуты, 27 секунд (16.01.2009 - 02:18) kirik написал(а):
Цитата (FatCat @ 15.01.2009 - 16:53)
Никому не придет в голову ампутировать бедро глазным скальпелем или оперировать глаз большим анатомическим ножом. Так и тут...

Называется - "вырезать гланды через ж*пу автогеном" =)

Guest, если его блог (_http://lasto.com/blog/) сделан на файлах, то я могу сказать что 0.06-0.07 секунд это много для подобного блога.

Цитата (Guest @ 15.01.2009 - 16:44)
Куча потраченного времени на обращение к базе при грамотном использовании может быть заменена на другое более быстрое с тем же объемом информации.

Давайте проведем тест.. Есть 1 миллион строк, допустим такой структуры id | name | password (пользователи) и нужно показать только тех пользователей у которых в имени присутствует буква k, а пароль начинается на b. Сколько у вас займет времени написание подобного скрипта + сколько будет отрабатываться сам скрипт по времени?

ЗЫ. Кстати вы что имеете ввиду? Именно занесение данных в файлы, или статичный хтмл сайт?

Еще вопрос, почему, если файлы это круто и быстро, все высоконагруженные веб-проекты работают на БД ? И еще, зачем тратятся деньги на разработку/поддержку баз данных, если все можно реализовать на файлах?

Спустя 1 час, 45 минут, 24 секунды (16.01.2009 - 04:03) Sylex написал(а):
Базы данных для того и придуманы - структурированный организованный набор данных.

БД в отличие от файлов, уже предоставляет свой программный интерфейс для удобного быстрого доступа к данным с большим кол-вом функций и возможностей.

СУБД сама заботится об управлении данными во внешней памяти, журнализирует изменения, предоставляет возможность резервного копирования и восстановления, может кэшировать запросы.

Другое дело, где уместно использовать файлы, а где БД - это уже другой вопрос. Все зависит от поставленной задачи.

В web-разработке в большинстве случаев БД являются самым подходящим удобным средством. smile.gif

Спустя 7 часов, 12 минут, 33 секунды (16.01.2009 - 11:16) brdm написал(а):
Опять не согласен.

Посмотрите магазин Ласто. Он не имеет баз. А работает получше любого, который имеет базы.

И опять же, я в принципе не против баз. Как было сказано выше для нагруженных проектов их использование действительно оправдано.
Просто я считаю, что очень часто базы используются там, где наверняка можно обойтись и без них. Нередки случаи, когда базы грохаются, да так, что теряется все.
А со скриптами Ласто никогда ничего не случится, потому, что все подлежит прямому копированию. Почитайте внимательно их описание. Там много интересного.
Да и вообще, часто встречается, что средний сайтик сделан на базах, даже страницы туда помещены, да и еще и обучающий курс php продается по этому поводу за приличные деньги. Ругаться хочется...
Никогда не соглашусь, что малый и даже средний проект надежней и выгодней на базах. Если тщательно посчитать все за и против, например для небольших сайтов то думаю скорее всего базы проиграют.
Наверняка Ласто проводил такие подсчеты. Кстати у него там много чего и даже нагруженные проекты и все без баз.
Да таких проектов немало. Например omsk777.ru

Ну и по поводу основной темы. Поскольку я новичок, то может кто подскажет, как всетаки как сформировать временную ссылку на скачивание файла, например на базе sid или может еще как-либо без баз.

Спустя 2 часа, 3 минуты, 36 секунд (16.01.2009 - 13:19) Sylex написал(а):
brdm
если бы вы прочитали статью, которую я дал, вы бы поняли

Спустя 4 часа, 31 минута, 13 секунд (16.01.2009 - 17:50) brdm написал(а):
За статью спасибо.

Статья хорошая.

Я имелл ввиду, может есть еще какие решения. Например с использованием sid и сессий. Наличие базы и ее отсутствие это условность.

Спустя 2 часа, 23 минуты, 47 секунд (16.01.2009 - 20:14) FatCat написал(а):
Цитата (brdm @ 15.01.2009 - 20:35)
пользователь смог-бы ее скачать один или два раза ( в случае сбоя). Или могла-бы существовать определенное время, например 24 минуты.
Потом эта ссылка должна стать недействительна?

Привязка к айпишнику устроит?

Файл лежит в секретной директории, и совсем с другим именем и расширением - $file. ПХП хранит в базе или в файле инфу по сопоставлению запрашиваемого имени с именем хранящегося файла $file_name и его миме-тип $file_type.

По запросу проверяется, был ли уже запрос с этого айпишника (сохраняется в базе или в файле). Если не было запросов - запись создается; если запись есть - проверяется истекшее время (или счетчик запросов на скачивание с этого айпишника, и +1 на каждый такой запрос).
Если всё гуд и файл можно отдавать:
PHP
header( "Content-Type: ".$file_type );
header( "Content-Disposition: inline; filename=\"".$file_name."\"" );
header( "Content-Length: ".(string)(filesize( $file ) ) );  
$fh 
= fopen( $file, 'rb' );
fpassthru( $fh );
fclose( $fh );

Спустя 17 минут, 49 секунд (16.01.2009 - 20:32) kirik написал(а):
Не могу это оставить.. =))))

Цитата (brdm @ 16.01.2009 - 03:16)
Да таких проектов немало. Например omsk777.ru

Время 2.297 сек. - это нормально? А если на сайте хотябы 200 человек (это не высоконагруженный проект) то 2.3*200/60=7.5 минут ?? =)

Цитата (brdm @ 16.01.2009 - 03:16)
Если тщательно посчитать все за и против, например для небольших сайтов то думаю скорее всего базы проиграют.

Поймите, ведь базы - это теже файлы, только специальным образом структурированные и подготовленные. Только вот разбором данных в случае БД занимается специально написанный "парсер" на С, а в случае файлов - парсер на PHP. Думаю в дополнительных комментариях не нуждается, что из этих двух языков быстрее обработает один и тотже файл (тем более вы говорите что работали с С++).

Спустя 11 минут, 9 секунд (16.01.2009 - 20:43) Hunter80 написал(а):
Автор: а почему ты на Си пишешь? почему не на ассемблере? Быстрее будет работать ассемблер то... А я могу тебе ответить почему не пишешь на асме - потому что каждую функцию придется сидеть и писать самому. И время затраченное на ее написание будет гораздо больше чем выигрыш от стандартной функции Си. А выигрыш от вытаскивания данных из файлов очень неоднозначен! Именно поэтому люди придумали языки программирования высокого уровня. Именно поэтому люди придумали базы... чтоб не сидеть и не лопатить одно и то же по сто раз smile.gif Не надо изобретать велосипед если он уже есть smile.gif Бу...

Спустя 1 час, 3 минуты, 4 секунды (16.01.2009 - 21:46) FatCat написал(а):
Цитата (kirik @ 16.01.2009 - 20:32)
Поймите, ведь базы - это теже файлы, только специальным образом структурированные и подготовленные

Я не влезал в теории, я просто сделал многие сотни тестов, когда оптимизировал движок форума.

И вот какие наблюдения:
Обычный select одной строки (по индексированному айдишнику) занимает 0,001 сек при "нулевой" таблице, и дальше прибавляй по 0,1 секунды на каждые 100 Мб размера таблицы; тот же селект из гиговой таблицы работает секунду и больше.
Однако селект 1-й строки и 15 строк занимает почти одинаковое время, независимо от размера таблицы.

Путем долгих проб и рассчетов я нашел оптимальные соотношения между записью в БД и в файлы: сообщения в форуме короче 4 000 знаков идут в БД, более длинные в файл.

Спустя 1 час, 15 минут, 14 секунд (16.01.2009 - 23:01) sergeiss написал(а):
Цитата (kirik @ 16.01.2009 - 20:32)
Поймите, ведь базы - это теже файлы, только специальным образом структурированные и подготовленные. Только вот разбором данных в случае БД занимается специально написанный "парсер" на С, а в случае файлов - парсер на PHP.

Наконец-то на 2-й странице прозвучал самый весомый и наиболее правильный аргумент в споре "файлы vs БД" smile.gif

Спустя 6 дней, 1 час, 11 минут, 51 секунда (23.01.2009 - 00:13) brdm написал(а):
Очень хорошие наблюдения. Главное полезные. Не все оказывается так просто.

Отклонюсь от темы с вопросом.

Часто встречаю, что в качестве сеттингов для какого-либо скрипта используется файл с расширением .ini и с записями типа:

[connect_ru_fields]

UserName="Пожалуйста, укажите Ваше имя.";
UserEmail="Вы должны указать свой email адрес.";
Subject="Определитесь с темой Вашего сообщения.";
UserComments="Вы не заполнили поле комментария.";
secretcode="Нужно перерисовать в поле формы кривенькие циферки с картинки.";
........

;??? end

Может кто знает, как это все работает?
Быстрый ответ:

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