Что произойдет, если база данных MySQL не была закрыта?

#php #mysql

#php #mysql

Вопрос:

Что произойдет, если база данных MySQL не закрыта? Как мы узнаем, правильно ли она закрыта?

У меня есть страница, на которой есть 11 таблиц на page..so что я сделал, так это открыл базу данных в верхней части страницы перед запуском скрипта и закрыл там, где скрипты (PHP) заканчиваются…

окончание — mysql_close($ db) ; … это достаточно справедливо или мне нужно указать только mysql_close();

Комментарии:

1. Вы говорите о закрытии всей базы данных (что предотвращает дальнейший доступ) или о закрытии одного соединения с базой данных (что освобождает именованный канал или сокет)? О чем вы спрашиваете?

2. закрытие одного соединения… потому что mine — это своего рода поисковая система, которая в значительной степени зависит от базы данных

Ответ №1:

Я не могу с уверенностью сказать, все ли версии PHP / Mysql на всех серверных платформах ведут себя одинаково. Для tcp-подключений к базе данных — если вы не вызовете mysql_close($ db), у вас будет оборванное tcp-соединение, которое просто будет ждать использования в течение полуминуты после завершения скрипта. Тогда это просто исчезнет само по себе.

Я не могу сказать, происходит ли это из-за того, что сборка мусора PHP занимает целых 30 секунд, или же срок действия tcp-соединения истекает само по себе через 30 секунд после вызова connect.

Однако Mysql_close ($ db) мгновенно прерывает TCP-соединение. Так что да, я бы сказал, всегда вызывайте mysql_close ($ db) сразу после того, как вам больше не нужно подключение к базе данных в вашем скрипте.

Ответ №2:

Нет смысла закрывать соединение в конце скрипта, потому что это делается за вас, когда скрипт завершается. Единственный раз, когда вам действительно следует явно вызвать функцию close, — это если вы запускаете демон или что-то в этом роде и не хотите удерживать соединение на протяжении всего выполнения.

PDO считается современной библиотекой доступа к базе данных для PHP (вам действительно следует использовать ее вместо mysql_* функций, но это уже другая история), и даже у нее нет функции close, просто для наглядности.