Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Алгоритм работы с БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Механизм реализации добавления информации, аналогичный Википедии
Yan9
Отправлено: 07 Сентября, 2015 - 00:56:37
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Здравствуйте! Хочу реализовать возможность добавления пользователями данных (картинки и текст), как это сделано в Википедии.

Вопрос в том, как это лучше сделать? У меня 2 варианта:
1. Сделать две БД, в первой сделать таблицу, в которую будет попадать информация от пользователей. Затем я эту информацию проверяю и переношу во вторую БД в нужную таблицу, из которой потом выводится информация на сайт.
2. Одна БД, но данные от пользователей вносятся в одну таблицу, я эти данные проверяю и переношу их в другую таблицу, из которой потом выводится информация на сайт.

И еще вспомогательный вопрос:
Картинки от пользователей лучше хранить в самой таблице либо в папке, а в таблице хранить путь к этим картинкам?

Спасибо!
 
 Top
DlTA
Отправлено: 07 Сентября, 2015 - 01:25:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




странно что нет варианта когда юзверь вносит данные которые после модерации допускаюстя к выводу

картинки в базе лучше не хранить, они там много места занимают, и базу допонительно кладут
 
 Top
Yan9
Отправлено: 07 Сентября, 2015 - 01:29:41
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




DlTA пишет:
странно что нет варианта когда юзверь вносит данные которые после модерации допускаюстя к выводу

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


Тоже склонялся хранить путь к картинкам. Подскажите как эту модерацию реализовать? Я вот думал именно таким путем. Оказывается делается это не так?
 
 Top
DlTA
Отправлено: 07 Сентября, 2015 - 02:14:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Yan9 пишет:
Подскажите как эту модерацию реализовать?

какой то очень странный вопрос

дополнительное поле в таблице, 1/0 модерирован/немодерирован
(Добавление)
Yan9 пишет:
Тоже склонялся хранить путь к картинкам

а разве фотки будут храниться в разных папках??
обычно достаточно имени файла
 
 Top
Yan9
Отправлено: 07 Сентября, 2015 - 12:23:47
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




DlTA пишет:
Yan9 пишет:
Подскажите как эту модерацию реализовать?

какой то очень странный вопрос

дополнительное поле в таблице, 1/0 модерирован/немодерирован
(Добавление)
Yan9 пишет:
Тоже склонялся хранить путь к картинкам

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


Я так и подумал, чтобы добавить еще одно поле в таблицу, просто новичок и думал, что может есть какой-то другой способ, все меняется быстро и я многого могу не знать.

Картинки в одной папке, да, я знаю, там просто.

Спасибо!

(Отредактировано автором: 07 Сентября, 2015 - 12:26:16)

 
 Top
Panoptik
Отправлено: 07 Сентября, 2015 - 14:33:09
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




учтите что очень много картинок в одной папке >1000 - это очень плохо. так что возможно нужно будет их поделить по подпапкам


-----
Just do it
 
 Top
DlTA
Отправлено: 07 Сентября, 2015 - 14:57:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Panoptik пишет:
учтите что очень много картинок в одной папке >1000 - это очень плохо

чем?
 
 Top
Panoptik
Отправлено: 07 Сентября, 2015 - 18:10:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




сканирования файлов замедляется как при работе с файловым менеджером так и для программ.
и если вдруг вам понадобиться руками лазать в такую папку, вы будете не в восторге
(Добавление)
http://stackoverflow[dot]com/questio[dot][dot][dot]t-in-a-directory


-----
Just do it
 
 Top
Yan9
Отправлено: 07 Сентября, 2015 - 22:27:18
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Panoptik пишет:
сканирования файлов замедляется как при работе с файловым менеджером так и для программ.
и если вдруг вам понадобиться руками лазать в такую папку, вы будете не в восторге
(Добавление)
http://stackoverflow[dot]com/questio[dot][dot][dot]t-in-a-directory


Спасибо за информацию, даже не знал о разных файловых системах. Но в той ссылке, которую вы сбросили указано, что в одну папку можно помещать миллионы файлов. Или я что-то не понял?
 
 Top
Panoptik
Отправлено: 08 Сентября, 2015 - 09:52:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




если вы внимательно прочитали все ответы то среди них есть например такие
http://stackoverflow[dot]com/a/21805580/2110663 где указано что в папке в которой 10к файлов поиск происходит более чем в 10 раз медленнее чем в папке в которой 1к и соответственно если меньше то еще быстрее
ну и надеюсь вы прочти то что при количестве овер 32к некоторые программы перестают работать (как то ls)

а теоретически вы можете конечно писать туда сколько угодно, я же даю всего лишь рекоммендацию как лучше

ну и если ближе к делу то достаете md5 hash из файла или названия файла к примеру файл называется test.jpg делаем из него мд5 хеш 0412c29576c708cf0155e8de242169b1
берем первые 2 буквы хеша и создаем с таким названием папку. то есть
04. соответстенно в базу запишите относительный путь вместе с названием файла 04/test.jpg
при таком алгоритме у вас получится размещать файлы примерно одинаково распределенными по 16^2 = 256 папкам это как раз <1000
если файлов намного больше и в каждой папке у вас будет получаться (или теоретически вы предполагаете) >1000 файлов, создаете еще один подуровень по тому же принципу, то есть берем следующие 2 буквы хеша 12.
соответственно создаете папку внутри 04 и уже внутри папки копируете свой файл 04/12/test.jpg - этот же путь будет записан в базу
файлы в идеале тоже лучше переименовывать в latin-digital формат чтобы в файловую систему не попадали всякие юникод символы, но это уже другая тема
а по сути у вас получится 256*256 = 65к файлов относительно равномерно распределенных по файловой системе и доступ к ним будет происходить с приемлемой скоростью.
можно увеличивать иерархию еще на уровень, больше наверное смысла не будет так как такое количество файлов наверняка не влезет на ваш диск, но теоретически можно

(Отредактировано автором: 08 Сентября, 2015 - 09:55:41)



-----
Just do it
 
 Top
Yan9
Отправлено: 08 Сентября, 2015 - 13:09:51
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Panoptik пишет:
если вы внимательно прочитали все ответы то среди них есть например такие
http://stackoverflow[dot]com/a/21805580/2110663 где указано что в папке в которой 10к файлов поиск происходит более чем в 10 раз медленнее чем в папке в которой 1к и соответственно если меньше то еще быстрее
ну и надеюсь вы прочти то что при количестве овер 32к некоторые программы перестают работать (как то ls)

а теоретически вы можете конечно писать туда сколько угодно, я же даю всего лишь рекоммендацию как лучше

ну и если ближе к делу то достаете md5 hash из файла или названия файла к примеру файл называется test.jpg делаем из него мд5 хеш 0412c29576c708cf0155e8de242169b1
берем первые 2 буквы хеша и создаем с таким названием папку. то есть
04. соответстенно в базу запишите относительный путь вместе с названием файла 04/test.jpg
при таком алгоритме у вас получится размещать файлы примерно одинаково распределенными по 16^2 = 256 папкам это как раз <1000
если файлов намного больше и в каждой папке у вас будет получаться (или теоретически вы предполагаете) >1000 файлов, создаете еще один подуровень по тому же принципу, то есть берем следующие 2 буквы хеша 12.
соответственно создаете папку внутри 04 и уже внутри папки копируете свой файл 04/12/test.jpg - этот же путь будет записан в базу
файлы в идеале тоже лучше переименовывать в latin-digital формат чтобы в файловую систему не попадали всякие юникод символы, но это уже другая тема
а по сути у вас получится 256*256 = 65к файлов относительно равномерно распределенных по файловой системе и доступ к ним будет происходить с приемлемой скоростью.
можно увеличивать иерархию еще на уровень, больше наверное смысла не будет так как такое количество файлов наверняка не влезет на ваш диск, но теоретически можно


Да, я комментарии не читал, все верно.
Спасибо за информацию, буду знать!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB