破釜沉舟论坛 » WEB 开发 » [PHP]关于投票功能的疑问

2006-5-31 14:06 coldney
[PHP]关于投票功能的疑问

  关于投票,我是这样想的。
1、从数据库读出数据;
2、+1
3、存入数据库。。

可是如果两人同时投票,会不会造成只加一票?
该怎么解决?

2006-5-31 14:29 木舟
看了楼主的签名,  不敢回复了!   店小二快来,  讨论下技术问题! [s:2]

2006-5-31 21:30 coldney
小二还没来。。
木舟,你就说一下吧

2006-5-31 23:40 木舟
先检查再投票!

2006-5-31 23:44 coldney
怎么检查?检查什么呢?

2006-5-31 23:51 木舟
检查一下该用户有没有投过票,  具体怎么检查看你自己的的, 你可以记录ip cookie 等等.

2006-6-1 09:21 php店小二
[quote][b]引用第0楼[i]coldney[/i]于[i]2006-05-31 14:06[/i]发表的“[PHP]关于投票功能的疑问”[/b]:
  关于投票,我是这样想的。
1、从数据库读出数据;
2、+1
3、存入数据库。。

.......[/quote]


感觉楼主是要解决并发的问题吧!

方法有好多种,如果你哟年的是mysql数据库的话,最简单的一种办法是 “锁表”

同一时间点(其实是段)只允许一个人读写表,先锁表,读写完后再释放表!

这是在数据库层!

当然还有其他程序层的方法!

2006-6-1 09:24 php店小二
上面是最安全的一种方法

你或者可以用自加

不读只写 update table_name set column_name = column_name +1

这也是一种方法,不知道安全系数有多大,我感觉应该是可以

建议楼主采用第一种!

2006-6-1 10:47 coldney
好像第二种简单些。
木舟,第二种安全系数怎样?

2006-6-1 11:22 php店小二
[quote][b]引用第8楼[i]coldney[/i]于[i]2006-06-01 10:47[/i]发表的“”[/b]:
好像第二种简单些。
木舟,第二种安全系数怎样?[/quote]

第一种安全系数是最高的

update 自增的时候也应该有时间时间的交叉(感觉)没有测试过!

2006-6-1 11:35 木舟
就像论坛发帖一样, 就算是同一时间, 也有个先后顺序的.

2006-6-1 12:12 php店小二
我下午研究一下论坛的post并发是怎么处理的!
再来回复你啊!嘿嘿

2006-6-1 13:00 php店小二
$db->update("UPDATE pw_threads SET lastpost='$timestamp',lastposter ='".addslashes $windid)."',replies=replies+1 $ifupload ,hits=hits+1 WHERE tid='$tid'");

PHPWind 用的就是这个自增!
[s:4]  [s:4]

2006-6-1 14:37 coldney
哈哈,还是第二种方法。。
多谢了

2006-6-3 16:40 xiaozen
木舟的技术是好,但是也不用搞“两个个凡吧”…… [s:10]
PHP,到底可难学啊,各位前辈……

2006-6-3 19:17 木舟
[quote][b]引用第14楼[i]xiaozen[/i]于[i]2006-06-03 16:40[/i]发表的“”[/b]:
木舟的技术是好,但是也不用搞“两个个凡吧”…… [s:10]
PHP,到底可难学啊,各位前辈……[/quote]

严重同意,     bs 一下coldney 有误导嫌疑!

2006-6-5 09:24 php店小二
coldney
你的签名是不是在吸引眼球啊?嘿嘿
[s:2]  [s:2]

2006-6-5 14:23 zhangsent
不能用application.lock吗`!?
在写数据时就锁定它,写好了再解锁呗~!

2006-6-5 17:56 木舟
[quote][b]引用第17楼[i]zhangsent[/i]于[i]2006-06-05 14:23[/i]发表的“”[/b]:
不能用application.lock吗`!?
在写数据时就锁定它,写好了再解锁呗~![/quote]

楼主讨论的是php的问题:)

2006-6-6 09:21 php店小二
[quote][b]引用第17楼[i]zhangsent[/i]于[i]2006-06-05 14:23[/i]发表的“”[/b]:
不能用application.lock吗`!?
在写数据时就锁定它,写好了再解锁呗~![/quote]


无论是哪种语言道理都是通的
都可以锁的

页: [1] 2


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.