Mysql Пара вопросов по PDO

RUOK

Новичок
Приветствую! Пишу парсилку и наткнулся на не совсем понятные для меня странности в работе с PDO:

1) Имеется вот такой код:

PHP:
$dbh = new PDO(DSN, MYSQL_USER, MYSQL_PASS);

$sth = $dbh -> prepare("SELECT id, name, url FROM shops;");
$sth -> execute();

$dbh = null;

while ($row = $sth -> fetch()) {
...
}
Странность в том, что во время выполнения WHILE соединение с базой не закрывается(видно в phpMyAdmin), хотя $dbh = null(везде написано что надо так делать) должно было его закрыть. Вероятно объект $sth его поддерживает. Непонятно что там происходит?



2) Вот такой код не лочит таблицы:

PHP:
$sth = $dbh -> prepare("LOCK TABLES pages WRITE;");
$sth -> execute();
А если делать через exec($dbh -> exec("LOCK TABLES pages WRITE;"), то все нормально. Почему так?


3) Заметил странность при работе с удаленными базами данных. Когда скрипт работает долго, то иногда происходят разрывы соединения с базой, в php_errors.log записывается один раз сообщение от PDO "MySQL server has gone away", но скрипт продолжает работать несмотря на это, хотя там на каждом шагу запросы в базу, но при этом сообщения об ошибках больше не возникают, PDO просто по-тихому отправляет все эти запросы в никуда. Это нормальное поведение? Можно ли получить рекомендации как обустроить работу с базой таким образом, чтобы скрипт переподключался в случае отключения или, если можно ссылку на провереный манюал?

Спасибо.
 
Сверху