保持正确的Facebook数量'喜欢'

问题描述:

说我有类似的情况。 我有一个页面;并且当用户点击类似按钮时,我正在保持点赞数。 现在,这是我的问题。保持正确的Facebook数量'喜欢'

说我目前的网页数为50

我的表包含PAGE_ID,和其他page_description,也喜欢目前总数。 此外,我有一个表包含页面和用户ID的id。

现在,我的like.php脚本正在执行的操作是,它从表中读取当前的总计数,然后通过向表中添加一个来更新该表。还输入LIKE表的新条目。

假设我有10个用户同时喜欢这个页面。 脚本太阳和所有的用户获得50作为初始计数,并添加一个后;每个用户只更新它到51。

但是真正的计数应该是50 + 10 = 60。

我该如何解决这个问题?

您可以在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_pages之前将数据插入到tbl_likes中,并且tbl_pages值始终取决于tbl_likes记录,而不是由PHP页面提交的某个数字。

只是一个说明,真的没有理由保持总数在tbl_pages。只要服务器没有承受大量负载,就应该对这些数据进行规范化处理。

+0

哦。你想把这个SQL逻辑放在一个事务中。 – 2011-12-25 14:51:27

+0

此查询如何增加值? – Kraken 2011-12-25 16:28:17

+0

第二个子句(update table子句)将like_count设置为具有该page_id的tbl_likes表中的行数。这听起来像你已经将这些信息存储在数据库中。 – 2011-12-26 23:47:04