Задавайте вопросы, мы ответим
Вы не зашли.
Как можно сделать так, чтобы на время запретить чтение какой-то таблицы.
Допустим к таблице 'table1' делается запрос 'select d1 from table1'. Затем
значение из 'd1' увеличивается на 1 и снова заносится в ту же таблицу 'table1' в тоже поле 'd1'. Необходимо, чтобы за время, когда скрипт получает значение и заносит в таблицу новое, не вклинился другой процесс. Иначе получится, что два раза из 'd1' будет извлечено одно и тоже значение и, соответственно, в таблице величина 'd1' изменится на 1, а нужно чтобы на 2.
Запрет записи здесь не решает проблемы, необходимо запретить именно чтение даных из таблицы. Как такое можно реализовать из php скрипта?
Отредактированно sito-corito (16.11.2009 15:53:51)
Неактивен
SELECT GET_LOCK('blabla', 10);
Неактивен
Я сделаю уточнение. Необходимо, чтобы второй процесс, который пытается прочесть уже заблокированное поле, автоматически становился в очередь на прочтение. Когда один процесс закончит работу с таблицей, то другой, дождавшись окончания, автоматически производит нужные ему действия.
Неактивен
Объясню подробнее.
Есть несколько таблиц с товарами. Каждая таблица содержит определённую категорию товаров. Для каждого товара устанавливается уникальный номер в пределах всех таблиц (чтобы номер товара не повторялся ни в одной таблице). Для этого я делаю специальную таблицу, в которой храню номер последнего добавленного товара. Процессы последовательно обращаются к этой таблице и всегда должны получать уникальный номер (дождавшись окончания другого процесса)
Неактивен
Вы пытаетесь сериализовать процессы. Есть специальный метод для сериализации
процессов, я его написал.
Более правильно, чем использовать его, — только использовать mutex внутри
приложения.
Если совсем не можете жить без своей идеологии — блокируйте таблицы, с которыми
будете общаться, на запись (LOCK TABLE tablename WRITE). Но это неправильный
подход.
Неактивен