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

S
На сайте с 30.09.2016
Offline
469
#31
MkrtElion:
Ну и в свете всего вышесказанного думаю что тут дело не движке в "умельце"

А движки кто делает? И это простейший пример. В многоюзерском движке при последовательных операциях с несколькими таблицами всегда следует учитывать возможность одновременных запросов, просто знать и учитывать. Это не делается автоматически, это делается программистом. Об этом и речь, а не о каких-то там "суперсложностях".

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
ME
На сайте с 03.07.2017
Offline
66
#32
Sitealert:
А движки кто делает? И это простейший пример. В многоюзерском движке при последовательных операциях с несколькими таблицами всегда следует учитывать возможность одновременных запросов, просто знать и учитывать. Это не делается автоматически, это делается программистом. Об этом и речь, а не о каких-то там "суперсложностях".

Разве транзакции БД не помогут в этом деле?

SeVlad
На сайте с 03.11.2008
Offline
1609
#33
MkrtElion:
Этот пример кажется надуманным.

А ситуация когда пост правится одновременно модератором(и) и юзером тоже надумана?

А эти картинки тоже ни о чем не говорят?:

Если и после этого кажется "надумано", то тогда пожалуй только троеперстие сможет помочь. И то я не уверен.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
S
На сайте с 30.09.2016
Offline
469
#34
MkrtElion:
Разве транзакции БД не помогут в этом деле?

Транзакции вообще-то происходят при любых записях в БД. Но в простых CMS удовлетворяются автоматическими коммитами, никто не морочит себе голову управлением транзакциями. А в многопользовательских CMS приходится заморачиваться. Не заморочишься - получишь упомянутые "косяки".

L
На сайте с 10.02.2015
Offline
235
#35
Sitealert:
Ну самый простой пример – когда "умелец" пишет пост юзера в БД и определяет ID этого поста как ID последней записи в базе, отдельным запросом к этой базе. А в период между записью и селектом туда пишется следующая запись, от другого юзера. А в программе, написанной "умельцем", этот ID используется для записи картинки в другую таблицу. И в результате картинка из первого поста оказывается во втором посте.

Но:

https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id

The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.
S
На сайте с 30.09.2016
Offline
469
#36

Был вопрос про пример – я написал простейший пример, чтобы было понятно, о чём речь. Можешь по аналогии свой пример придумать, если этот не нравится. Мне – лень.

ME
На сайте с 03.07.2017
Offline
66
#37
SeVlad:
А ситуация когда пост правится одновременно модератором(и) и юзером тоже надумана?
А эти картинки тоже ни о чем не говорят?:



Если и после этого кажется "надумано", то тогда пожалуй только троеперстие сможет помочь. И то я не уверен.

Это решается инкрементом поля. Эта операция сама по себе атомарная.

L
На сайте с 10.02.2015
Offline
235
#38
Sitealert:
Был вопрос про пример – я написал простейший пример, чтобы было понятно, о чём речь. Можешь по аналогии свой пример придумать, если этот не нравится. Мне – лень.

Один ляпнул о каких-то коллизиях, но ему лень писать.

Другой ляпнул о глюках автоинкремента, которых нет. Писать ему тоже лень.

S
На сайте с 30.09.2016
Offline
469
#39
livetv:
Другой ляпнул о глюках автоинкремента, которых нет. Писать ему тоже лень.

А третий читать не обучен, а думать не способен. Поэтому просто долбает по клаве.

SeVlad
На сайте с 03.11.2008
Offline
1609
#40
MkrtElion:
Это решается инкрементом поля. Эта операция сама по себе атомарная.

ОМГ.. Автоинкремент на голосования..

Нда... всё оказывается намного хуже, чем я думал.

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