Создание схемы хранения большого количества файлов на сервере

Discussion in 'PHP' started by superboy4, 1 Jan 2010.

  1. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Итак. Скажим, мне нужно хранить огромное количество фотографий на сервере. Это фотографии альбомов и аватар пользователей. Ежу ясно, что в базе данных следует хранить пути к каждой конкретной фотографии, а сами фотографии в папках или папке, и каким образом, по какой схеме?

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

    Создавать папку для каждого альбома, для каждого пользователя, как это делается для высоконагруженных проектов? :(
     
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Можешь ещё распределять на поддомены.
    Например на одном поддомене все картинки в большом размере.
    На другом все в уменьшеном.
    На третьем в увеличенном.

    А вообще лучше всего намутить скрипт обработчик запросов.
    сделать такую штукенцию, например будет такой запрос к получению аватара:
    get_pic.php?id=%ID пользователя%&size=%размер%

    Где %размер%, например, avatar или small или big

    А скрипт сам сделает запросы и выведет нужную фоту.
     
  3. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    я нифига не понял
    для каждого пользователя/альбома рекомендуется ли делать папку?
     
    #3 superboy4, 1 Jan 2010
    Last edited: 1 Jan 2010
  4. REBUUS

    REBUUS Active Member

    Joined:
    6 Apr 2009
    Messages:
    314
    Likes Received:
    111
    Reputations:
    9
    просто создай три папки в одном месте mini , big, ava и каждую фоку закидывай в каждую папку с своими размерами но с одним и тем же названием потом обращайся к ним так:
    http://sitename/ava/00000001.jpg
    http://sitename/mini/00000001.jpg
    http://sitename/big/00000001.jpg
     
    1 person likes this.
  5. REBUUS

    REBUUS Active Member

    Joined:
    6 Apr 2009
    Messages:
    314
    Likes Received:
    111
    Reputations:
    9
    а лучше сделай в корне папку img и в этой папке уже вот эти три папи, и тогда путь будет
    http://sitename/img/ava/00000001.jpg
    что бы легче и понятнее было потом и бэкап проще будет делать
     
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Мне печально, что ты ничего не понял.
    Я дело сказал
     
    4 people like this.
  7. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    Думаю, не стоит создавать для каждого альбома отдельную папку.
    Можно хранить все картинки в одном месте, но с префиксами.
    например:
    http://site/img/album1_1_big.jpg
    http://site/img/album1_1_small.jpg
    http://site/img/album1_2_big.jpg
    http://site/img/album2_2_small.jpg

    Можно использовать папки big, small, как предлагали выше.
    Для упрощения вида ссылок использовать mod_rewrite
    Способ размещения файлов в каждой конкретной задаче можно реализовать по-разному, поэтому однозначного решения нет.
     
  8. suser

    suser Member

    Joined:
    30 Dec 2009
    Messages:
    35
    Likes Received:
    5
    Reputations:
    0
    Думаю не надо.

    Лучше мб создавать папку с названием к примеру первые 6 символов от хеша и записывать в конфиг имя и сохранять в неёю если количество файлов в ней больше допустим 100 - создавать новую папку и тд
     
    #8 suser, 1 Jan 2010
    Last edited: 1 Jan 2010