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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:06:45
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


Как лучше организовать переписку на сайте? Например где будет много народа, то таблица в mysql messages не вариант, слишком много записей в одной таблице.
Тогда делаем переписку с записью в файл. У каждого зарегистрированного юзера на проекте есть своя папка, в которой хранится переписка с другими юзерами, т.е. если заходим в скрипт messages.php то обращение идет в 1 конкретный файл, что в разы ниже нагрузка. Как лучше организовать такую переписку? В отдельном одном файле, или придется создавать один и тот же файл у каждого юзера в его папке? т.е. переписка между 2мя юзерами - это 2 одинаковых файла, которые лежат в его папке с его идишником... Иначе ведь никак? Как это лучше организовать подскажите..?

(Отредактировано автором: 06 Сентября, 2013 - 09:08:21)

 
 Top
Ch_chov
Отправлено: 06 Сентября, 2013 - 09:10:08
Post Id



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


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




nomak_suntown пишет:
таблица в mysql messages не вариант, слишком много записей в одной таблице
А при каком количестве по вашему наступит "слишком много"?
 
 Top
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:11:48
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


Не в этом дело! Уже есть реализация через 1 бд, уникальные идишники и тп все есть, но хочется разобраться ИМЕННО в данном методе и ИМЕННО так. Например в соцсетях явно не через 1 бд это дело сделано)))
 
 Top
imya
Отправлено: 06 Сентября, 2013 - 09:14:41
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




Вы удивитесь, но именно через БД. С файлами они вряд ли работают в таком контексте.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:17:41
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


Как реализовать переписку между пользователями, с записью в файл? Или в 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 с лишним лямов юзеров, все переписываются в одной БД.. ага.. Или нет, скриптом создаются дополнительные миллионы бд для каждого юзера! Конечно в это я не поверю.
 
 Top
Stierus Супермодератор
Отправлено: 06 Сентября, 2013 - 09:22:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




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

Вы, видимо, просто не слышали еще о шардинге данных. Погуглите Улыбка
ps
А в миллиарды файлов, в которых лежит каждая переписка (у каждого из этих 40млн пользователей не один же чат, правда?) вам верится лучше?
 
My status
 Top
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:23:54
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


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

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


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

Но нужно как то сделать одним файлом.

(Отредактировано автором: 06 Сентября, 2013 - 09:30:58)

 
 Top
Stierus Супермодератор
Отправлено: 06 Сентября, 2013 - 09:30:35
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Цитата:
Но блин не каждый пользователь перепсиывается ПРЯМ С КАЖДЫМ пользователем на проекте! Переписка обычно ведется только между друзьями, верно?

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


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


Stierus пишет:
Цитата:
Но блин не каждый пользователь перепсиывается ПРЯМ С КАЖДЫМ пользователем на проекте! Переписка обычно ведется только между друзьями, верно?

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



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

Симлинки?? Я опять гуглить... Реализовать могу, но хочется сделать одним файлом
 
 Top
Stierus Супермодератор
Отправлено: 06 Сентября, 2013 - 09:40:10
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Идея с файлами жизнеспособна, проблема файлов только в одном - по ним нельзя делать выборки. Рано или поздно, вы захотите статистику - кто с кем переписывается, сколько пользователей имеет более 3 чатов, например и тд. Или там найти чаты всех людей, который меньше 18. + если тебен ужно будет добавить свойства чатов (ну там каким цветом раскрашивать или ввести открытые чаты, к которым могут присоединяться кто угодно - не важно, ккие-то свойства именно чатов) - то вам придется к каждому чату добавлять описывающий его свойства отдельный файл, либо внедрять системные символы для описания этих свойств комнат. Сложно расширять, собирать статистику и тд. А так, ничто не мешает писать чаты на файлах, оно работать будет.
 
My status
 Top
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:51:15
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


нет это излишества, простая обычная информативная переписка. Этого достаточно.
А выбрать юзеров, которые имеют более 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 - переписка в одном файле, где е хранить, как ее хранить, может у того кто начал переписку, а как собеседнику на на этот файл выйти и тп короче)

(Отредактировано автором: 06 Сентября, 2013 - 09:52:28)

 
 Top
imya
Отправлено: 06 Сентября, 2013 - 09:52:18
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




http://www[dot]xakep[dot]ru/post/55052/

Почитайте, думаю будет полезным.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
nomak_suntown
Отправлено: 06 Сентября, 2013 - 09:53:18
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


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

[+]


спасибо, уже читал

(Отредактировано автором: 06 Сентября, 2013 - 09:54:34)

 
 Top
DelphinPRO
Отправлено: 06 Сентября, 2013 - 09:58:06
Post Id



Активный участник


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


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




Фигней страдаете, товарищ. Делайте нормально, с использованием БД.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imya
Отправлено: 06 Сентября, 2013 - 10:04:13
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


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




nomak_suntown пишет:
спасибо, уже читал

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


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB