1
Sunyanzi 2013-12-31 15:26:56 +08:00
事实上我没能完全看懂你的提问 ... 我能看懂的部分是一个 MySQL 问题 ...
SELECT `id`,`name` FROM `tablename` WHERE `status`=0 ORDER BY `id` ASC LIMIT 0, 1 赋值 status = 1 我没明白 ... 不就是一条 UPDATE 语句么 ..? |
2
likexian 2013-12-31 15:33:47 +08:00
update `table` set `status`=1 where status=0 limit 1
|
3
miao OP @Sunyanzi 感谢您的回答, 我确实不知道如何形容这个超级简单的问题, 您这条sql语句应该能用,
后面 ORDER BY `id` ASC LIMIT 0, 1 这句话 意思是不是 按`id`的升序排序, LIMIT 0, 1 就是只读取一条数据? |
4
miao OP |
5
66beta 2013-12-31 16:00:15 +08:00
这属于SQL问题,楼主可以翻手册慢慢做,自己搞出来的比较有趣
可以现在数据库GUI上跑一下,成功了再贴到PHP里面~ |
6
arbipher 2013-12-31 16:15:27 +08:00
把cursor保存下来,但是我不知道这个在PHP里面怎么实现。。。
我顺路问一下,PHP怎么实现全局变量(就像JSP里面Application范围的变量一样) |
8
arbipher 2013-12-31 17:59:48 +08:00
@zzNucker 不是global吧。我没理解错的话,php的globa范围l应该等效于jsp的request范围,php global变量只在这一次请求中有效,下一次请求的时候会重新初始化。
|
9
msg7086 2014-01-01 05:44:13 +08:00
@arbipher 因为以前PHP每次接受请求的时候都会产生一个新的php-cgi进程。既然每次都产生新进程了,那全局变量的生存周期当然只到脚本结束的时候就结束了。
要持久化,就得用第三方的东西。apc/mc/radis/mysql/cookie/session等等 |
10
arbipher 2014-01-01 09:47:32 +08:00
@msg7086 我去翻了下文档,可以用Semaphore。shm_get_var, shm_put_var。
http://www.php.net/manual/en/ref.sem.php 感觉这和读写数据库也没啥区别的。。。 |
12
zzNucker 2014-01-01 22:43:08 +08:00
@arbipher 你这是啥 - - 是同步用的玩意吧, 一般你要跨request的话php确实难的,基本要靠用外部存储。。
|
13
arbipher 2014-01-01 23:01:06 +08:00
@zzNucker
这个问题我是在SAE上写PHP是遇到的。 我要在服务器初始化的时候,从数据库读些东西放到memcache里面。函数是memcache_set($mmc,"foo","bar")。 为了防止memcache的数据被洗掉,任何一个请求,只要memcache_get失败,就去数据库里面读一次,把结果存到memcache里。 问题是我担心,这个“读数据库存到memcache”的操作不是原子的。当时就在想全局锁的事情。 LZ这个帖子让我想到了这件事情。所以我的潜意识里,开始解答我自己的疑惑了。 其实我也不知道,这个操作是不是一定要原子。可能是我想多了吧。 至于LZ这个问题,利用mysql,或者Semaphore都能解决吧,绕了一下而已。 但是PHP下,服务器级别的全局变量的最直接的方法,我还是不知道。 |