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
Форумы портала PHP.SU :: Версия для печати :: Переписка на сайте, организация
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Переписка на сайте, организация

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

1. nomak_suntown - 06 Сентября, 2013 - 09:06:45 - перейти к сообщению
Как лучше организовать переписку на сайте? Например где будет много народа, то таблица в mysql messages не вариант, слишком много записей в одной таблице.
Тогда делаем переписку с записью в файл. У каждого зарегистрированного юзера на проекте есть своя папка, в которой хранится переписка с другими юзерами, т.е. если заходим в скрипт messages.php то обращение идет в 1 конкретный файл, что в разы ниже нагрузка. Как лучше организовать такую переписку? В отдельном одном файле, или придется создавать один и тот же файл у каждого юзера в его папке? т.е. переписка между 2мя юзерами - это 2 одинаковых файла, которые лежат в его папке с его идишником... Иначе ведь никак? Как это лучше организовать подскажите..?
2. Ch_chov - 06 Сентября, 2013 - 09:10:08 - перейти к сообщению
nomak_suntown пишет:
таблица в mysql messages не вариант, слишком много записей в одной таблице
А при каком количестве по вашему наступит "слишком много"?
3. nomak_suntown - 06 Сентября, 2013 - 09:11:48 - перейти к сообщению
Не в этом дело! Уже есть реализация через 1 бд, уникальные идишники и тп все есть, но хочется разобраться ИМЕННО в данном методе и ИМЕННО так. Например в соцсетях явно не через 1 бд это дело сделано)))
4. imya - 06 Сентября, 2013 - 09:14:41 - перейти к сообщению
Вы удивитесь, но именно через БД. С файлами они вряд ли работают в таком контексте.
5. nomak_suntown - 06 Сентября, 2013 - 09:17:41 - перейти к сообщению
Как реализовать переписку между пользователями, с записью в файл? Или в 2 файла?
Примерная структура папок на сайте:
-css
-images
-userfiles/$id/messages/

Могу сделать так:

-userfiles/$id/messages/$messid/messages.dat

Тогда переписка между юзерами 1 и 2 будет выглядеть так:
-userfiles/1/messages/2/messages .dat
-userfiles/2/messages/1/messages.dat

И все чудесно работает, но 2 файла.. Может какнибудь намыслить с такой структурой но в 1 файл? Есть варианты? ))
(Добавление)
imya пишет:
Вы удивитесь, но именно через БД. С файлами они вряд ли работают в таком контексте.

О да, очень смешно. Соцсеть вконтакте, 40 с лишним лямов юзеров, все переписываются в одной БД.. ага.. Или нет, скриптом создаются дополнительные миллионы бд для каждого юзера! Конечно в это я не поверю.
6. Stierus - 06 Сентября, 2013 - 09:22:52 - перейти к сообщению
Цитата:
О да, очень смешно. Соцсеть вконтакте, 40 с лишним лямов юзеров, все переписываются в одной БД.. ага.. Или нет, скриптом создаются дополнительные миллионы бд для каждого юзера! Конечно в это я не поверю.

Вы, видимо, просто не слышали еще о шардинге данных. Погуглите Улыбка
ps
А в миллиарды файлов, в которых лежит каждая переписка (у каждого из этих 40млн пользователей не один же чат, правда?) вам верится лучше?
7. nomak_suntown - 06 Сентября, 2013 - 09:23:54 - перейти к сообщению
Или тот, кто начал переписку, тот и создает у себя в папке файл с перепиской, а тот кто собеседник, получает к себе в БД в поле какойнибудь ярлычек в виде идишника того, кто начал, и уже читает переписку с файла с пути того кто начал.. Тыща мыслей как сделать это, а вот как лучше и правильно не могу определить))
(Добавление)
Уже гуглю. Но блин не каждый пользователь перепсиывается ПРЯМ С КАЖДЫМ пользователем на проекте! Переписка обычно ведется только между друзьями, верно?
(Добавление)
На счет шардинга почитал, тоже самое и делается в файлах, не обязательно использовать БД. Хочу реализовать именно так! Мне проще это сделать, нежели делить БД по нескольким серверам)))

Регистрация: Как только прошла проверка, юзер зарегился, сразу создаются его папки, включая папку с messages. Вот и все. У каждого такая папка, в ней хранятся переписки в разных файлах, к примеру


-userfiles/1/messages/2/messages _id_1.dat
и
-userfiles/2/messages/1/messages _id_2.dat

Но нужно как то сделать одним файлом.
8. Stierus - 06 Сентября, 2013 - 09:30:35 - перейти к сообщению
Цитата:
Но блин не каждый пользователь перепсиывается ПРЯМ С КАЖДЫМ пользователем на проекте! Переписка обычно ведется только между друзьями, верно?

Верно. Мне видится, что у каждого пользователя, в среднем около 40 -50 чатов (учитывая групповые)
Беря вашу цифру в 40млн пользователей (я эту цифру не знаю, будем считать, что вы говорите правлу), получаем 40млн * 50 чатов на каждого = 2млрд чатов, в каждом чате от двух, до хз скольки человек ... пусть, в среднем их будет 3 ... для чего я про людей? - вам же к этому файлу надо выставить права доступа, что бы его могли читать только участники Улыбка
(Добавление)
Цитата:
Но нужно как то сделать одним файлом.
Симлинки, вас спасут симлинки Улыбка))
9. nomak_suntown - 06 Сентября, 2013 - 09:33:35 - перейти к сообщению
Stierus пишет:
Цитата:
Но блин не каждый пользователь перепсиывается ПРЯМ С КАЖДЫМ пользователем на проекте! Переписка обычно ведется только между друзьями, верно?

Верно. Мне видится, что у каждого пользователя, в среднем около 40 -50 чатов (учитывая групповые)
Беря вашу цифру в 40млн пользователей (я эту цифру не знаю, будем считать, что вы говорите правлу), получаем 40млн * 50 чатов на каждого = 2млрд чатов, в каждом чате от двух, до хз скольки человек ... пусть, в среднем их будет 3 ... для чего я про людей? - вам же к этому файлу надо выставить права доступа, что бы его могли читать только участники Улыбка
(Добавление)
Цитата:
Но нужно как то сделать одним файлом.
Симлинки, вас спасут симлинки Улыбка))



Все верно, да. Но намного в скрипте Messages.php когда юзер переходит по нему, проще сделать запрос к пути к себе в папку и открыть файлик с мессагами, нежели делать тоже самое, но через БД...

Симлинки?? Я опять гуглить... Реализовать могу, но хочется сделать одним файлом
10. Stierus - 06 Сентября, 2013 - 09:40:10 - перейти к сообщению
Идея с файлами жизнеспособна, проблема файлов только в одном - по ним нельзя делать выборки. Рано или поздно, вы захотите статистику - кто с кем переписывается, сколько пользователей имеет более 3 чатов, например и тд. Или там найти чаты всех людей, который меньше 18. + если тебен ужно будет добавить свойства чатов (ну там каким цветом раскрашивать или ввести открытые чаты, к которым могут присоединяться кто угодно - не важно, ккие-то свойства именно чатов) - то вам придется к каждому чату добавлять описывающий его свойства отдельный файл, либо внедрять системные символы для описания этих свойств комнат. Сложно расширять, собирать статистику и тд. А так, ничто не мешает писать чаты на файлах, оно работать будет.
11. nomak_suntown - 06 Сентября, 2013 - 09:51:15 - перейти к сообщению
нет это излишества, простая обычная информативная переписка. Этого достаточно.
А выбрать юзеров, которые имеют более 3х переписок-это выбрать тех, у кого сколько файлов самой переписки. Переписка юзера с другим-это один отдельный файл. Я же говорю вот структура:
-userfiles/1/messages/messages_i d_1.dat
-userfiles/1/messages/messages_id_2.dat
-userfiles/1/messages/messages_i d_3.dat
это 3 рызные переписки одного юзера с другими юзерами. Ну вы поняли. Но нужно ведь чтобы переписку видели оба, верно? )) Поэтому и приходится создавать эти же файлы в папке получателя. В том то и проблема, как можно организовать переписку между юзеров, но чтобы она хранилась в 1м файле. (между юзером 1 и 2 - переписка в одном файле, где е хранить, как ее хранить, может у того кто начал переписку, а как собеседнику на на этот файл выйти и тп короче)
12. imya - 06 Сентября, 2013 - 09:52:18 - перейти к сообщению
http://www[dot]xakep[dot]ru/post/55052/

Почитайте, думаю будет полезным.
13. nomak_suntown - 06 Сентября, 2013 - 09:53:18 - перейти к сообщению
спасибо, уже читал
14. DelphinPRO - 06 Сентября, 2013 - 09:58:06 - перейти к сообщению
Фигней страдаете, товарищ. Делайте нормально, с использованием БД.
15. imya - 06 Сентября, 2013 - 10:04:13 - перейти к сообщению
nomak_suntown пишет:
спасибо, уже читал

И вы всё ещё думаете, что они юзают ! Базу данных ?

 

Powered by ExBB FM 1.0 RC1