Допустим существует какой-либо файл в архиве и имеет конкретный линк на сервере.
Как на php выполнить так, чтобы после получения определенной ссылки на скачивание архива(которая должна формироваться автоматом, например на базе sid пользователя и естественно ни словом ни духом не напоминать реальный линк архива), пользователь смог-бы ее скачать один или два раза ( в случае сбоя). Или могла-бы существовать определенное время, например 24 минуты.
Потом эта ссылка должна стать недействительна?
Наверняка для этого можно использовать сессии. Но как?
Может кто уже писал, что-то подобное? Поделитесь, если можно.
Спустя 9 минут, 14 секунд (15.01.2009 - 20:44) Sylex написал(а):
Спустя 1 час, 2 минуты (15.01.2009 - 21:46) brdm написал(а):
Спасибо.
Хорошая статья. База данных - сложновато это все. Хотя для фильмов, которых куча, может и оправдано.
Может как-ниудь на простом текстовом файле это организовать, с использованием сессии и ее id?
Мне - бы сам принцип, как это делается оптимально.
Хорошая статья. База данных - сложновато это все. Хотя для фильмов, которых куча, может и оправдано.
Может как-ниудь на простом текстовом файле это организовать, с использованием сессии и ее 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 сервер, то без раздумий стоит напрячь его.
Приведите пример, чем БД при грамотном использовании хуже файлов?
Я в свою очередь приведу пример, чем базы данных лучше.
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 позволяет вдвое уменьшить число запросов к файлам, и соответственно удвоить пропускную способность сервера.
Например, на нашем движке это на сегодня самое узкое место...
Хранение динамической информации в sql позволяет вдвое уменьшить число запросов к файлам, и соответственно удвоить пропускную способность сервера.
Например, на нашем движке это на сегодня самое узкое место...
Спустя 1 час, 55 минут, 53 секунды (16.01.2009 - 00:44) Guest написал(а):
Не убедительно.
Против Вас тоже можно привести много примеров.
WordPress работает на базе. Но это не скрипт, а кошмар на улице вязов.
Еще раз... посмотрите скрипты от Ласто lasto.com и все станет на свои места.
Куча потраченного времени на обращение к базе при грамотном использовании может быть заменена на другое более быстрое с тем же объемом информации.
Я хоть и новичок, но я новичок в php. А так я программист электронщик VHDL, С++.
Что не есть хорошо, понимаю хорошо.
База - это не есть хорошо для большинства малых и средних проектов.
Если на базе некоторые артисты еще и страницы сайта или блога формируют, то это вообще гайка.
Против Вас тоже можно привести много примеров.
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-разработке в большинстве случаев БД являются самым подходящим удобным средством.
БД в отличие от файлов, уже предоставляет свой программный интерфейс для удобного быстрого доступа к данным с большим кол-вом функций и возможностей.
СУБД сама заботится об управлении данными во внешней памяти, журнализирует изменения, предоставляет возможность резервного копирования и восстановления, может кэшировать запросы.
Другое дело, где уместно использовать файлы, а где БД - это уже другой вопрос. Все зависит от поставленной задачи.
В web-разработке в большинстве случаев БД являются самым подходящим удобным средством.
Спустя 7 часов, 12 минут, 33 секунды (16.01.2009 - 11:16) brdm написал(а):
Опять не согласен.
Посмотрите магазин Ласто. Он не имеет баз. А работает получше любого, который имеет базы.
И опять же, я в принципе не против баз. Как было сказано выше для нагруженных проектов их использование действительно оправдано.
Просто я считаю, что очень часто базы используются там, где наверняка можно обойтись и без них. Нередки случаи, когда базы грохаются, да так, что теряется все.
А со скриптами Ласто никогда ничего не случится, потому, что все подлежит прямому копированию. Почитайте внимательно их описание. Там много интересного.
Да и вообще, часто встречается, что средний сайтик сделан на базах, даже страницы туда помещены, да и еще и обучающий курс php продается по этому поводу за приличные деньги. Ругаться хочется...
Никогда не соглашусь, что малый и даже средний проект надежней и выгодней на базах. Если тщательно посчитать все за и против, например для небольших сайтов то думаю скорее всего базы проиграют.
Наверняка Ласто проводил такие подсчеты. Кстати у него там много чего и даже нагруженные проекты и все без баз.
Да таких проектов немало. Например omsk777.ru
Ну и по поводу основной темы. Поскольку я новичок, то может кто подскажет, как всетаки как сформировать временную ссылку на скачивание файла, например на базе sid или может еще как-либо без баз.
Посмотрите магазин Ласто. Он не имеет баз. А работает получше любого, который имеет базы.
И опять же, я в принципе не против баз. Как было сказано выше для нагруженных проектов их использование действительно оправдано.
Просто я считаю, что очень часто базы используются там, где наверняка можно обойтись и без них. Нередки случаи, когда базы грохаются, да так, что теряется все.
А со скриптами Ласто никогда ничего не случится, потому, что все подлежит прямому копированию. Почитайте внимательно их описание. Там много интересного.
Да и вообще, часто встречается, что средний сайтик сделан на базах, даже страницы туда помещены, да и еще и обучающий курс php продается по этому поводу за приличные деньги. Ругаться хочется...
Никогда не соглашусь, что малый и даже средний проект надежней и выгодней на базах. Если тщательно посчитать все за и против, например для небольших сайтов то думаю скорее всего базы проиграют.
Наверняка Ласто проводил такие подсчеты. Кстати у него там много чего и даже нагруженные проекты и все без баз.
Да таких проектов немало. Например omsk777.ru
Ну и по поводу основной темы. Поскольку я новичок, то может кто подскажет, как всетаки как сформировать временную ссылку на скачивание файла, например на базе sid или может еще как-либо без баз.
Спустя 2 часа, 3 минуты, 36 секунд (16.01.2009 - 13:19) Sylex написал(а):
brdm
если бы вы прочитали статью, которую я дал, вы бы поняли
если бы вы прочитали статью, которую я дал, вы бы поняли
Спустя 4 часа, 31 минута, 13 секунд (16.01.2009 - 17:50) brdm написал(а):
За статью спасибо.
Статья хорошая.
Я имелл ввиду, может есть еще какие решения. Например с использованием sid и сессий. Наличие базы и ее отсутствие это условность.
Статья хорошая.
Я имелл ввиду, может есть еще какие решения. Например с использованием 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 ); |
Спустя 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 написал(а):
Автор: а почему ты на Си пишешь? почему не на ассемблере? Быстрее будет работать ассемблер то... А я могу тебе ответить почему не пишешь на асме - потому что каждую функцию придется сидеть и писать самому. И время затраченное на ее написание будет гораздо больше чем выигрыш от стандартной функции Си. А выигрыш от вытаскивания данных из файлов очень неоднозначен! Именно поэтому люди придумали языки программирования высокого уровня. Именно поэтому люди придумали базы... чтоб не сидеть и не лопатить одно и то же по сто раз Не надо изобретать велосипед если он уже есть Бу...
Спустя 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 БД"
Спустя 6 дней, 1 час, 11 минут, 51 секунда (23.01.2009 - 00:13) brdm написал(а):
Очень хорошие наблюдения. Главное полезные. Не все оказывается так просто.
Отклонюсь от темы с вопросом.
Часто встречаю, что в качестве сеттингов для какого-либо скрипта используется файл с расширением .ini и с записями типа:
[connect_ru_fields]
UserName="Пожалуйста, укажите Ваше имя.";
UserEmail="Вы должны указать свой email адрес.";
Subject="Определитесь с темой Вашего сообщения.";
UserComments="Вы не заполнили поле комментария.";
secretcode="Нужно перерисовать в поле формы кривенькие циферки с картинки.";
........
;??? end
Может кто знает, как это все работает?
Отклонюсь от темы с вопросом.
Часто встречаю, что в качестве сеттингов для какого-либо скрипта используется файл с расширением .ini и с записями типа:
[connect_ru_fields]
UserName="Пожалуйста, укажите Ваше имя.";
UserEmail="Вы должны указать свой email адрес.";
Subject="Определитесь с темой Вашего сообщения.";
UserComments="Вы не заполнили поле комментария.";
secretcode="Нужно перерисовать в поле формы кривенькие циферки с картинки.";
........
;??? end
Может кто знает, как это все работает?