Задавайте вопросы, мы ответим
Вы не зашли.
PHP+MySQL
Есть система статистики организованная следующем образом.
Когда приходит пользователь, то он записывается в таблицу статистики сегодняшного дня.
Когда день заканчивается, то из этой самой таблицы все удаляется и подсчитывается.
Но вот проблема:
когда приходит пользователь, то изначально проверяется, соответствуют ли даты в таблице сегодняшней и если не соответствуют, то начинается удаление всего из таблицы и так дале...
Вопрос: возможна ли такая ситуация, что два пользователя прийдут одновременно и одновременно начнется обновление данных? Если да, то как этого избежать?
Работу с кроном не предлагать.
Неактивен
Например, Вы можете сделать таблицу Innodb и все операции выполнять внутри транзакции. В этом случае для удаления следует использовать DELETE, а не TRUNCATE. Для MyISAM можете использовать LOCK TABLES
Проблема в том, что другие пользователи будут ждать пока Вы обработаете статистику. Проще переименовать таблицу, создать новую пустую и только затем обрабатывать. Эти операции внутри транзакции, к сожалению, сделать нельзя, поэтому каждый пользователь должен уметь обрабатывать ситуацию, в которой таблица переименована, но еще не создана - в этом случае самое простое это продолжить работу без записи статистики.
Неактивен
Спасибо за ссылку, осталось только перевести что там написано
Неактивен
Возьмите русскую документацию http://downloads.mysql.com/docs/refman- … hapter.zip (она правда для 4.0, но LOCK TABLES в ней описано)
Неактивен