Глюк LOCK TABLES?

EugeneVC

Новичок
Глюк LOCK TABLES?

Подвисает база из за такого кода

$sql="LOCK TABLES my_table AS write"

exec($sql);

.....

header("Location: my_page.php");

получается что не снимаются блокировки после после посылки header. База зависает и не дает к ней обращастя.

Глюк то я поправил, добавив UNLOCK TABLES. Но щас база висит и как блокировки снять я не представляю.

В mysql запрос UNLOCK TABLES не помогает
 

alpine

Новичок
EugeneVC
Читаем мануал:
Автор оригинала: mySQL manual
Ман: Синтаксис команд LOCK TABLES/UNLOCK TABLES
Команда LOCK TABLES блокирует указанные в ней таблицы для данного потока. Команда UNLOCK TABLES снимает любые блокировки, удерживаемые данным потоком. Все таблицы, заблокированные текущим потоком, автоматически разблокируются при появлении в потоке иной команды LOCK TABLES или при прекращении соединения с сервером.
Автор оригинала: EugeneVC
получается что не снимаются блокировки после после посылки header. База зависает и не дает к ней обращастя.
Глюк то я поправил, добавив UNLOCK TABLES. Но щас база висит и как блокировки снять я не представляю.
В mysql запрос UNLOCK TABLES не помогает
Читаем мануал там же дальше:
Автор оригинала: mySQL manual
Поток, ожидающий блокировку таблицы, можно безопасно уничтожить с помощью команды KILL. See Раздел 4.5.5, «Синтаксис команды KILL».
Что не понятно?
 

EugeneVC

Новичок
понятно
правда процессов около 500
и для каждого писать KILL id страшновато

и что же получается, если я забуду сделать UNLOCK TABLES то подвешу хостера, как щас и произошло

у него щас ругается на невозможность connect к базе

-~{}~ 11.09.05 21:43:

вообщем нарвался на pconnect и LOCK TABLES

Вот цитата:
Помимо всего этого существуют еще некоторые проблемы постоянных соединений с транзакциями и блокировками таблиц. Так, если таблица блокируется запросом на транзакцию или LOCK TABLE и при этом скрипт заканчивает свое выполнение до завершения транзакции или выполнения разблокировки таблицы UNLOCK TABLE соответственно, то вторичная попытка доступа к таблице через это же постоянное соединение будет отклонена. При использовании непостоянного соединения с БД, при завершении скрипта соединение закрывается автоматически и при этом снимает блокировку со всех таблиц и завершает все транзакции. Решением этой проблемы есть регистрации функции register_shutdown_function() которая бы по завершению скрипта снимала блокировку с таблиц и завершала транзакции.
так что теперь 8 часов надо ждать пока соединения закроются
 
Сверху