За последние 24 часа нас посетили 16858 программистов и 1311 роботов. Сейчас ищут 1402 программиста ...

Файлы или база

Тема в разделе "Прочие вопросы по PHP", создана пользователем greenbanan, 29 июл 2013.

  1. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Здравствуйте.
    Предположим, что я пишу гостевую книгу, в которой к сообщениям будет прикрепляться фотографии и распостранено такое понятие как аватар. Также предположим, что этой гостевой книгой будет пользоваться миллион человек ежесекундно.
    Внимание вопрос: Лучше ли хранить путь до картинок в базе (и как грамотнее, в таком случае это сделать) или опираться на файловую структуру (проверять существование файла и исходя из этого делать выводы[glob, file_exists])? Лучше здесь понимается быстрее и надежнее.
    Спасибо.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    ты чтоли так хорошо продвинулся, что пора о хайлоад думать? :D сделай просто чтобы работало и чтобы не стыдно друзьям показать.

    Добавлено спустя 35 секунд:
    неадекватных тут и так хватает. давай не теряй голову.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    нах проверять на существовании картинки когда в базе урл записана? нету картинки - нету записи в базе.
     
  4. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Если вы не знаете, то так и скажите. Дело в том, что я задал конкретный вопрос и надеюсь услышать конкретный ответ. Гостевая книга лишь пример, и все обстрактно. И да, я продвинулся до уровня highload.

    Добавлено спустя 3 минуты 50 секунд:
    Вы не понимаете вероятно мою задумку. Предположим, что я выбрал путь работать только с файлами и есть папка Avatars и там есть картинки %uid%.jpg. Очевидно то, что я могу не обращаясь к бд, проверить стоит аватар у юзера или нет [file_exists($id.".jpg")].
    Так я вот и хочу спросить, что оптимальнее, писать в бд, или основываться на специальной файловой структуре?

    Спасибо.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    быстрее и надежнее не проверять наличие никак. пусть веб-сервер проверяет.
     
  7. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Идеальный совет. Вы уверены, что читали топик? Это СИСТЕМА. Как мне тогда вывести аватарку по умолчанию, или не выводить вложений в сообщении, или как мне получить их имена без бд и проверки на существование.
    Напомню, я спросил: ЧТО БЫСТРЕЕ СИСТЕМА ВЫБОРКИ НА ФАЙЛАХ ИЛИ БД? (подробнее описывал выше)
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    мой юный падаван, не все так невнимательны и одновременно грубы как ты )))
    ты в своей СИСТЕМЕ не описал реакцию на отсутствие аватары у пользователя. или должна ли СИСТЕМА реагировать на то, что юзер сменил аватару.

    Добавлено спустя 4 минуты 10 секунд:
    для твоей воображаемой гостевой лучшим решением будет граватар.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Зачем использовать бд, когда у вас есть папка с именем зарегистрированного пользователя и в нем лежат фотки, на какой тут бд дергать когда тупо надо вывести ему в <мтаное слово> его аватарку(и).
    Один <матное слово> бд дернишь, выдернишь путь до загруженной картинки и опять же нужно работать с серверов, желательно ее конечно же проверить, что это такое путь или нет. является ли это вообще картинкой или нет, есть ли вообще картинка или нет.

    ПЕЗР
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    ты так все заебатовски говоришь когда у него все аватарки в одной папке

    Добавлено спустя 3 минуты 19 секунд:
    извращенец блин 100500 пользователей и для каждого надо
    found:
    LOX/
    avatar/
    LOX2/
    avatar/
    LOX3/
    avatar/
    LOX4/
    avatar/
    LOX5/
    avatar/

    я хуею вместе с файлообменником
     
  11. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Очень круто, ребята серьезно. У artoodetoo бомбануло. Принесите тряпку. Все обсудили все, кроме ответа непосредственно на вопрос.

    Код (Text):
    1. if (file_exists($name)) echo "<img src='{$name}' />";
    2. или
    3. mysqli_query("SELECT avatar FROM users WHERE id='{$id}'");
    Структура такова, есть сообщения. Для каждого сообщения, если в нем будет вложение(я) будет создана папка носящее его идентификатор как название, при помощи функции glob я получу все картинки и выведу в сообщение, у аватарок схема иная есть папка avatars а в ней картинки с id пользователей.

    2artoodetoo: Я вообще не грубый. Просто я пришел сюда не тратить ваше время, на советы которые мне не нужны. Я сказал, что гостевая книга - абстракция, это был пример. Вы тратили время и ломали клавиатуру когда отвечали мне советами, вместо того чтобы ответить на главный вопрос. Именно за этим я его тут и переписывал его из поста в пост: (glob или file_exists) vs хранение в бд? Что выбрать и почему. Я вас уверяю, если мне захочется чтобы система могла менять аватары я смогу как ключ в базе изменить, так и файл заменить.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    файлы надо хранить на харде. в бд надо хранить их названия =)
     
  13. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Предположим что у вас Id=1 и вы написали пост с pid=2 у меня в ФС содастся слеующая структура.
    avatars/1.jpg (выберу file_exists'ом)
    attach/2/*.jpg (выберу глобом)
    Зачем бд? Только вопрос выход ли это при большой нагрузке.
    Спасибо.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да пофик.

    вы когда до хайлоада дойдете, много чего интересного прочтете по дороге. Например, что всё кешируется и масштабируется и тд и тп.

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

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

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Извини, плохо понимаю по тарабарски. Отвечу (для других) и помещаю тебя в игнор как безнадегу.
    Если вопрос в том, надо ли в файловой CMS искать аватару в базе данных, то совет: нет, не надо )))
    Если надо выбрать как проверять наличие файла - glob или file_exists, то очевидно file_exists.

    А реальность такова: аватара у пользователя одна, путь до нее однозначно определяется user_id, хули там хранить. Был бы нюанс с обновляемыми аватарами и кешем браузера, но ты это просто не учитываешь - теоретик ёпта. Ок. Проверять наличие может сам вебсервер, в целях оптимизации настраиваем правила веб-сервера реакции на отсутствие статики. А img пусть будет всегда. Так все высоконагруженные фейсбуки с линкединами работают.
    Другой охуительный совет: пусть в гостевой используются граватары. Ты тоже не понял.
     
  16. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Да ладно вам $name."?".time() спасут от кэша. Я спросил, что быстрее искать в файловой системе или в бд. Но ответа так и не получил. Никто так и не понял мой вопрос( Я грущу.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в жежешечке можно на каждый пост аватарку другую. какая аватарка у тебя сейчас, такая же останется навсегда в посте, который ты сейчас напишешь. =)

    Добавлено спустя 3 минуты 39 секунд:
    что искать?
     
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    по началу лучше
    а после того!!! когда дойдет до уйму пользователей зареганных
     
  19. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Так то жежешечка! Чего бы хорошего вспомнил )
     
  20. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
  21. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Ну ты везунчик! На SO редко бывает чтобы ни один ответ не получил статуса "решение" и даже плюсика не заработал. Проплюсуй хоть ты сам -- то что хочешь считать решением )))
     
  22. greenbanan

    greenbanan Активный пользователь

    С нами с:
    21 июн 2011
    Сообщения:
    33
    Симпатии:
    0
    Ну холивар, но что-то полезное можно почерпнуть. Из этого же треда - вообще ничего. Используйте gravatar и не сходите с ума, только если это за мысль взять треда.
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сам файл картинки в бд держать не нужно точно
     
  24. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    MAN_IFE_ST, ты еще мальчик, глуп и не видал <матное слово>. Ты даже не понимаешь, о чем ты говоришь.
    Причем тут бд и файлы, я не понимаю.
    И чем плохо для каждого пользователя своя папка?
    Тебя убило название "Папка", что ты прям так вздрогнул и назвал всех пользователей лохами-не зная обозначения слова "Лох", сочувствую тебе.
    Но вернемся к папкам, они ничего не весят, "они не занимают места", с ними удобно хранить файлы, проще дернуть папку и взять с нее файл, чем листать и искать во всех в кучу собранных файлах какой-то 1 или несколько.
    В случае если будет какая-то затея, что у пользователя будет не 1 картинка, будет куда шустрее дернуть папку с пользователем и найти только в ней.
    По этому прежде чем <матное слово>, ты подумай а с чего ты будешь <матное слово>.
    Это все, что требуется.
    С базы данных вы можете взять ид пользователя и вывести по ней его картинку(и).
    В этой самой папке "avatars".
    Это было бы странным =)))
     
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    начнем лучше с папок.
    итак... еще раз повторю когда будут 100500 пользователей ты будешь кровью рыдать с файлообменником. (знаю по опыту уже) так что нефиг сказки сочинять.
    Про мальчика. В этом ты глубоко ошибаешься, если даже представления не имеешь когда куча папок нахуярятся , как будешь хуевать когда зайдешь в файловый менеджер. Ты сам не только мальчиком будешь, но и станешь школо - недотроллем. Будь добр не пустословь. Особенно про мальчика ггг)))