Движок для форума или сайта вопросов-ответов

IL
На сайте с 20.04.2007
Offline
435
#41
SeVlad:
ОМГ.. Автоинкремент на голосования..

Почему "авто"? Просто инкремент же..

MkrtElion:
Эта операция сама по себе атомарная.

Просто даже к этой "атомарной" операции ещё учёт голосов должен быть.. чтоб два раза не "голосить". А если ещё и вес "голоса" ввести в зависимости от рейтинга плюсующего и текущего рейтинга поста, проверку на возможность добавления репу**ции конкретному пользователю.. Всё это вполне обычно.. но на хайлоаде легко может потребовать дополнительного внимания.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
SeVlad
На сайте с 03.11.2008
Offline
1609
#42
ivan-lev:
Просто инкремент же..

Да не важно в общем-то. ("авто" то у меня на автомате по привычке дописалось ;))

ivan-lev:
чтоб два раза не "голосить"

Первая засада ещё раньше: вначале нужно прочитать последнее значение.

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

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
IL
На сайте с 20.04.2007
Offline
435
#43
SeVlad:
вначале нужно прочитать последнее значение.

Речь как раз о том, что читать не обязательно..

UPDATE .. SET rating = rating+1 WHERE id_post = :id_post

Но, банально добавляя проверку на наличие записи (id_post, id_user) в таблице votes, голосование и добавление этой самой записи в votes, уже на "атомарном инкременте" приходим к транзакциям (или триггерам, которые по votes рейтинг поста пересчитывают).

SeVlad
На сайте с 03.11.2008
Offline
1609
#44
ivan-lev:
Речь как раз о том, что читать не обязательно..

Правда?

А прикинь когда 3 человека одновременно изменят репу и не все в плюс. Что изменится у каждого из них на экране, а? 🍿

ME
На сайте с 03.07.2017
Offline
66
#45
SeVlad:
Правда?
А прикинь когда 3 человека одновременно изменят репу и не все в плюс. Что изменится у каждого из них на экране, а? 🍿

Показательно однако. Каждый увидит актуальный результат в данный момент времени.

---------- Добавлено 15.10.2019 в 20:26 ----------

SeVlad:
ОМГ.. Автоинкремент на голосования..
Нда... всё оказывается намного хуже, чем я думал.

А что тут омгшного? Пример выше как раз то что я имел ввиду:

UPDATE .. SET rating = rating+1 WHERE id_post = :id_post

SeVlad что сразу в залупу лезите? Нормально же общаемся. Или прям руки чешутся говном побросать?

---------- Добавлено 15.10.2019 в 20:29 ----------

SeVlad:
Первая засада ещё раньше: вначале нужно прочитать последнее значение.

Это из разряда

if (true) {return true;} 

Уровень!

L
На сайте с 10.02.2015
Offline
222
#46
SeVlad:
Правда?
А прикинь когда 3 человека одновременно изменят репу и не все в плюс. Что изменится у каждого из них на экране, а? 🍿

Специально проверил.

Высветится:

Спасибо за добавление репутации этому пользователю. Возможно, он ответит вам взаимностью.

Это на этом форуме, на движке, который делали профи.

SeVlad
На сайте с 03.11.2008
Offline
1609
#47
livetv:
Высветиться:

Выводы на отлично! Садись, два.

Хотя нет, постой ещё чуток! Расскажи что ты ожидал увидеть при лайканиньи друг дружки?

И ещё.. не думаю, что даст пищи для размышлений, но вдруг - попробуй-ка повтори.

L
На сайте с 10.02.2015
Offline
222
#48
SeVlad:
Выводы на отлично! Садись, два.

Хотя нет, постой ещё чуток! Расскажи что ты ожидал увидеть при лайканиньи друг дружки?

И ещё.. не думаю, что даст пищи для размышлений, но вдруг - попробуй-ка повтори.

Месье, но я лайкнул Вас.

Вам должно было упасть подписанное уведомление.

ME
На сайте с 03.07.2017
Offline
66
#49
SeVlad:
Выводы на отлично! Садись, два.

Хотя нет, постой ещё чуток! Расскажи что ты ожидал увидеть при лайканиньи друг дружки?

И ещё.. не думаю, что даст пищи для размышлений, но вдруг - попробуй-ка повтори.

В обще суть высказываний в данном топике. Кратко:

1) форумные движки они... реалтаймовые что ли.. там коллизии обрабатываются и все по уму

2) будешь обрабатывать ситуации конкурентного доступа - будет хорошо

3) движок пишет разработчик, как напишет так и будет

Внимание вопрос - реально ли "форумные движки они... реалтаймовые что ли.." или просто от кривизны рук автора зависит и никак не от движка. И верно ли утверждение что вне зависимости от того, какого типа движок (форум, блог, контентный и т.д.) руки должны быть прямые всегда, а не только в случаях когда это форум?

SeVlad:
Форум, в отличии от контентных сайтов более.. реалтаймый что ли. И это при юзеростве. Т.е. нужно так построить работу с базой, что бы не возникало коллизий и проблем при одновременном чтении/записи множеством юзеров. И это только один из важных моментов.

IL
На сайте с 20.04.2007
Offline
435
#50
MkrtElion:
руки должны быть прямые всегда, а не только в случаях когда это форум?

1. На сайтах с одним админом меньше ситуаций, где можно накосячить.

2. При определённом уровне кривизны рук можно накосячить везде

3. "реалтаймовость" условная. как пример - количество новых сообщений в правом углу. или маркер прочитанности темы. При определённой нагрузке на сайт, когда "добавить мощностей" дорого и не особо помогает, выявляются узкие места и часть логики переписывается..

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий