Поддержание правильного количества лайков в facebook - PullRequest
0 голосов
/ 25 декабря 2011

Скажи, что у меня похожий сценарий.У меня есть страница;и я веду счет лайков, когда пользователь нажимает кнопку лайка.Теперь вот моя проблема.

Скажем, мой текущий счетчик страницы составляет 50.

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

Теперь, что делает мой скрипт like.php, он читает текущее общее количество из таблицы и затем обновляет эту таблицу, добавляяодин к нему.Также введена новая запись в таблицу LIKE.

Скажем, у меня есть 10 пользователей, которым нравится страница.Сценарий солнца и все пользователи получают 50 в качестве начального счета и после добавления одного;каждый пользователь обновляет его только до 51.

Но реальное количество должно было быть 50 + 10 = 60.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 25 декабря 2011

Вы можете сделать логику сложения в самом скрипте SQL. Вы сталкиваетесь с концепцией под названием «Последняя запись успешна». Это происходит потому, что вы используете код вашей страницы PHP, который не гарантирует какой-либо блокировки чтения / записи. Вы можете добавить эту логику, но было бы проще написать обновление SQL следующим образом:

INSERT INTO tbl_likes (page_id) VALUES (12)
UPDATE TABLE tbl_pages (page_id, like_count) VALUES (12, (SELECT COUNT(page_id) FROM tbl_likes WHERE page_id = 12))

Это было бы что-то подобное. Особенность этого алгоритма состоит в том, что вам нужно будет вставить данные в tbl_likes перед тем, как увеличивать tbl_pages, и что значение tbl_pages всегда зависит от записей tbl_likes и не является некоторым числом, представленным страницей PHP.

Просто замечание: на самом деле нет смысла хранить общее количество в tbl_pages. Вам следует нормализовать эти данные, если ваш сервер не испытывает огромных нагрузок.

...