venetu
Мой дом здесь!
- Регистрация
- 28 Мар 2007
- Сообщения
- 745
- Реакции
- 273
И вы забыли добавить, что всё это хозяйство работает только если тип таблицы InnoDb т.к. используются транзакции, найдутся ведь умельцы и на MyIsam такое сделают, а работать не будет.
Вот вариант для MyISAM. C обратной стороны заходим - сначала апдейтим, потом селектим.
PHP:
$rand = uniqid(getmypid(),true);
$query = "UPDATE queue SET rand='$rand', status='taken' WHERE status='free' LIMIT 1";
mysql_query($query);
$query = "SELECT * FROM queue WHERE status='taken' AND rand='$rand'";
mysql_query($query);
...
Но вообще в новых мускулах InnoDB уже идет by default. И Оракл анонсировал, что вроде собирается прекратить поддержку MyISAM вообще.