Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Очень нужен совет (https://javascript.ru/forum/server/13221-ochen-nuzhen-sovet.html)

mycoding 21.11.2010 18:25

А часто ставить cron-у задачи?
Просто если каждую минуту, это же на сервер большая нагрузка или нет?
Я кроном никогда не пользовался.
И предпложим будет ну 1000000 пользователей, то получается, cron-у надо во все папки зайти и глянуть нет ли там старых фото?
Или это делать раз в день, часа в 3 ночи, когда пользователей нет?

monolithed 21.11.2010 18:39

Цитата:

Сообщение от mycoding
1000000

хорошие планы)) У нашей компании тоже есть стоковый магазин фото, но таких цифр за сутки еще не было

Цитата:

Сообщение от mycoding
то получается, cron-у надо во все папки зайти и глянуть нет ли там старых фото?

Можно одну общую папку создать для всех пользователей
Цитата:

Сообщение от mycoding
Или это делать раз в день, часа в 3 ночи, когда пользователей нет?

да, раз в сутки запускать, с пользователями это никак не будет связано

Gozar 21.11.2010 18:48

удалено.

mycoding 21.11.2010 19:41

Вообще планирую где то около 1000000 активных пользователей, а так может быть и 5000000 и 1000000, конечно звучит может мощно. Но этот контент будет нужен очень многим.
Значит для каждого пользователя папку делать нельзя.

Придется наверное все в одной папке держать и названия у файлов будут вроде таких
id1267977matan9787.jpg и доступны они будут только для localhost.
И ещё одна папка в которой будут фото для просмотра(эти файлы будут копироваться туда из основной папки), которые будут удаляться раз в день.

monolithed 21.11.2010 19:57

Цитата:

Сообщение от mycoding
Значит для каждого пользователя папку делать нельзя.

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

DooMer 23.11.2010 14:50

Цитата:

Сообщение от mycoding (Сообщение 80103)
Вообще планирую где то около 1000000 активных пользователей, а так может быть и 5000000 и 1000000

наполеоновские планы

Gvozd 23.11.2010 16:23

Цитата:

Сообщение от monolithed
Кстати есть еще один вариант:
1. нужно создать папку для хранения фотографий, к примеру TMP, в которой будут храниться временные фотографии.
2. когда пользователь купит фото, то ему нужно давать не прямую ссылку на нее из основного хранилища, а ссылку на копию. Т.е. после покупки находится фото с нужным именем, затем производится копирование во временную папку и уникальное переименование самой фото, после пользователь получает ссылку на скачивание, которая действует определенное время (можно крону ставить задачу на выполнение скрипта, который будет удалять файлы срок хранения который вы определите)

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

Сообщение от monolithed
Можно одну общую папку создать для всех пользователей

отличное решение, для того чтобы "снизить нагрузку"
вы в курсе, что большое количество файлов в одной директории очень сильно замедляет работу с этой директорией?
Цитата:

Сообщение от mycoding
Придется наверное все в одной папке держать и названия у файлов будут вроде таких

по описанным причинам очень плохое решение
посмотрите на движок википедии(ну или саму википедию)
они хранят фотографии в подпапках на несколько под уровней

сейчас вроде бы первый уровень - 16 папок.
в каждой из них по 256 подпапок.
в оригинальном движке немного по-другому, но суть та же.

использование системы поддиректорий для хранения БОЛЬШОГО количества файлов - популярное решение, использующееся во многих движках.
в свое время помогал переводить один нагруженный проект с системы "одна папка, куча файлов", на систему "древовидная система папок.в листьях - файлы"
переводили именно потому, что начались жуткие тормоза файловой системы

ну, а использовать систему поддиректорий, где отдельному пользователю будет свой участок дерева, или же размазывать их по всему дереву - дело ваше

Gozar 23.11.2010 18:37

удалено.

mycoding 23.11.2010 19:15

Мне главное понять как надо, а дальше уже буду писать.
Как понял ограничение на количество папок в одной папке около 40000?
Т.е. если пользователей свыше 40000 и каждому сделать папку то будет сбой?

monolithed 23.11.2010 21:02

Цитата:

Сообщение от Gvozd
сейчас вроде бы первый уровень - 16 папок.
в каждой из них по 256 подпапок.

Что-то мне это Битрикс напоминает))

Цитата:

Сообщение от Gvozd
отличное решение, для того чтобы "снизить нагрузку"
вы в курсе, что большое количество файлов в одной директории очень сильно замедляет работу с этой директорией?

догадывался, но не был уверен.


Кстати, можно все проще сделать:
Когда пользователь купил файл, то нужно просто добавлять к его названию параметры с некими значениями (не к самому файлу, а в БД связывать с ссылками на файлы), а на прямой доступ к файлу делать запрет. Ну и соответственно отдавать только по этим ссылкам в пределах сессии


Часовой пояс GMT +3, время: 10:34.