За последние 24 часа нас посетил 22791 программист и 1262 робота. Сейчас ищут 728 программистов ...

как лучше - папка с файлом или просто файлы в папке ?

Тема в разделе "PHP для профи", создана пользователем Awilum, 6 янв 2020.

  1. Awilum

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

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    Доброго Времени Суток!

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

    Вариант1
    - accounts/
    -- username1/
    --- profile.yaml
    ...
    ...
    -- username1000/
    --- profile.yaml

    Вариант2
    - accounts/
    -- username1.yaml
    ...
    ...
    -- username1000.yaml
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    однозначно 1 вариант
    ....
    при большом кол-ве файлов в папке в Линуксе - довольно много времени на перебор тратится
    особенно если они большие, в зависимости от хоста заметно уже от 500-600 файлов в одной папке
     
  3. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    только ИМХО лучше не username а user_id
    и ИМХО лучше в базе таки хранить)
     
  4. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Однозначно второй.
    А за первый надо по рукам бить большой толстой школьной линейкой. Долго бить.
    Ну а дальше зависит от числа файлов. Оптимально разбивать на группы по ~1 тысячи.
    Об этом уже говорили. Например, https://php.ru/forum/threads/xranenie-izobrazhenij-na-servere.34688/ , https://php.ru/forum/threads/kak-luchshe-xranit-izobrazhenija.46231/
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    .@Chushkin - вы товариш во всех обсуждениях только и знаете бить линейкой, не раскрывая сути вопроса. Лучше б два предложения - почему так не надо делать. А ещё лучше результаты тестов - когда быстрее.

    Я так на задачу посмотрел шире, с запасом, что человек будет хранить вообще не один файл на пользователя, а множество. Я на своем опыте это познал, что когда более 500 в одной папке, то начинаются тормоза.
     
  6. Chushkin

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

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    А я что написал? Тоже самое, только вид сбоку.
    - Если у каждого юзера будет 200-1000 файлов, то первый вариант подходит. Или второй с разбивкой на группы. По сути и то и другое будет "с разбивкой на группы", - что эффективнее будет зависеть от конкретики.
    - Если один файл, как указал ТС (!), то ... линейкой за первый вариант. :)

    1) Опыт говорит, что "линейкой" эффективность 99%, а "раскрытие сути вопроса" менее 10%. ;)
    2) Когда-то тестировал, давно, в начале 2000-х (результаты не сохранились конечно). С тех пор ничего не изменилось - ФС те же.
    п.с. Где-то читал, что вроде-как придумали ФС, которым миллионы файлов в каталоге нипочём, но мне такие не попадались на практике.
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Конечно, второй лучше, если с «пользователем» связан только один файл и у ветки accounts нет «собственных файлов».

    Вообще я не завидую разработчикам CMS на файлах :)
     
    #7 miketomlin, 6 янв 2020
    Последнее редактирование: 6 янв 2020
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    Просто если один файл, да ещё и типизируемый с полями - возникает вообще вопрос, почему же не в БД?
     
  9. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Я знаю по крайней мере одну причину: БД неудобно загонять в git :)
     
    Awilum нравится это.
  10. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Чей та? Делай дамп и загоняй )) А вообще, мне больше нравится современный тренд на handless cms. Думаю ещё год или два и те же strapi или ghost станут вполне себе решением для небольших проектов.
     
  11. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Потому что у него "маленькая кмс на файлах"
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @ADSoft, чтобы использовать YAML. В БД пока нет YAML-полей. :)

    @artoodetoo, просто халявный хостинг гитхаба не поддерживает БД :)

    @romach, дамп плохо воспринимается хомо сапиенсами. А железу можно скормить все что угодно. Стерпит. (Я про YAML.) :)
     
    #12 miketomlin, 7 янв 2020
    Последнее редактирование: 7 янв 2020
  13. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    @miketomlin ну просто сейчас есть два отдельных развивающихся тренда:

    1. Генераторы - когда после билда у тебя появляется каталог dist с html,js,css и ты заливаешь всё это на любой хостинг. При этом тебе ни что не помешает подтягивать ещё данных с клиента и работать это будет на любом хостинге
    2. CMS без фронта: от бложиков типа gost, до довольно интересного strapi, где ты собираешь структуру сущностей прямо в админке и у тебя сразу появляются формочки с табличками, данные хранятся в какую-нибудь монге, а доступ ко всему этому ты получаешь через api, что позволяет интегрировать это всё куда угодно (в теории, на практике пока не слишком впечатляет)

    Так вот - эти два случая я понимаю, первым время от времени пользуюсь и с нетерпением жду когда добьют второй до production ready (реального, а не заявленного), а вот cms на файлах - нет. С одной стороны они всё равно требуют среды выполнения, а с другой - файлы не дают такой гибкости использования, как БД. Короче, непонятно )
     
  14. Awilum

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

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    @romach
    Код (Text):
    1. Так вот - эти два случая я понимаю, первым время от времени пользуюсь и с нетерпением жду когда добьют второй до production ready (реального, а не заявленного), а вот cms на файлах - нет.
    а как же Statamic ? Kirby ? да и тот же Grav от разрабов Джумлы ? вполне успешные и крупные проекты. Первые два еще и денег стоят.

    ---
    з.ы.
    да я и сам делю свою Flat File CMS - Flextype. Это лишь вопрос времени - плагинов, когда она сможет генерировать простую статику и станет HeadLess. По поводу второго, уже в 0.9.7 - Появится Delivery Content API. И по сути Flextype 0.9.7 можно будет юзать как HeadLess систему.
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Это радует. Я где-то раз в 2-3 месяца посматриваю на Flextype и каждый раз он становится вкуснее. То что вы делаете - очень круто на самом деле )
     
  16. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Awilum, да делайте себе на здоровье. Только без агрессии. А то на серче на днях уже забросали тапками одного, за то что он посмел пренебрежительно высказаться об CMS на файлах и топил за использование БД. По тебе, кстати, там тоже прошлись как-то не оч. хорошо.

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

    Headless и т.п. – это хорошо. Для нек. разрабов это не какой-то новый тренд, а сто лет как обыденность. Присоединяйтесь :)
    --- Добавлено ---
    P.S. С мыслью, что CMS на файлах можно использовать для «простых сайтов», согласиться могу. Но, как по мне, они сейчас все какие-то «корявые». Так что у вас есть шанс отличиться :)

    P.P.S. Хотя главное – это все же БД. В то время как нек. «коллекционеры контента» распределяют его по файлам и папкам, я заполняю БД любым доступным в конкретный момент способом.
     
    #16 miketomlin, 8 янв 2020
    Последнее редактирование: 8 янв 2020
  17. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ты просто глянь на свежие тренды. Пока оно ещё он не production-ready, в том плане что нельзя его просто так взять и использовать как тот же wordpress, местами вылезают либо недоделки, либо критически не хватает функционала. Но как тренд - это уже продвинулось довольно далеко как для бложиков, так и для простеньких каталогов / магазинов. В том же strapi можно прямо в админке сформировать сущности, связи между ними и получить на выходе как редактор табличек / формочек, так и api для доступа ко всему этому.

    У меня правда нет ни одного таска, что бы это применить, потому что все что я обычно делаю не ляжет ни на одну CMS, но если возникнет какой-нибудь лэндос с сотней товаров - я всерьез задумаюсь взять что-нибудь подобное.

    Ах да, strapi хранит все в БД, причем диапазон широк, от mysql до монги.

    p.s. хотя, подозреваю что у тебя тоже нет таких тасков. эх, на ком бы протестировать это? ))
     
  18. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @romach, я видел твой пред. адресованный мне пост ;) Для нек. разрабов это тоже не какой-то новый тренд, а обыденность.
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну тогда посоветуй что-нибудь актуальное )
     
  20. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @romach, лично мне удобнее манипулировать структурами данных на SQL. Без всяких прокладок и тем более свистоперделок. :)

    P.S. Кстати, классное «strapi», например mysql alter... :D
     
    #20 miketomlin, 8 янв 2020
    Последнее редактирование: 8 янв 2020
    romach нравится это.
  21. Awilum

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

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    @miketomlin Какая агрессия ? можно ссылку ? У меня вечный бан на сраче.ру. Гопота туда более не пускает.

    По поводу трендов.
    Да, в ближайшем будущем - API First / Headless системы будут в тренде и этот тренд будет только расти с ростом девайсов и тд.
    А вот тренд на монолитные системы будет спадать и неважно FlatFile или какая еще там другая БД.
     
  22. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Awilum, это было пожелание, чтобы «не скатился...» Или ты про ссылку на тему на серче?
     
  23. ibnteo

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

    С нами с:
    30 сен 2008
    Сообщения:
    34
    Симпатии:
    1
    Если директории содержат по несколько файлов, это одно дело, но хранить по одному файлу уж точно смысла нет. Ну и не надо сваливать тысячи файлов в одну директорию, если размещать по тысяче файлов в директории, то тысяча директорий это уже миллион файлов, с которыми можно уже работать, но если это текстовые файлы, лучше их в базе данных хранить, меньше места будут занимать, и работать с ними проще.