
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.