Как закрыть соединение с базой sql php
Перейти к содержимому

Как закрыть соединение с базой sql php

  • автор:

Стоит ли закрывать соединение с БД?

Стоит ли в пхп-коде после каждого запроса к mysql закрывать соединение с БД, если учесть, что соединение и так закрывается по завершению работы скрипта?

Отслеживать
задан 27 фев 2013 в 17:08
1,664 5 5 золотых знаков 31 31 серебряный знак 69 69 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Давайте вспомним старый добрый php.net : по окончанию работы сценария(конец кода/превышение лимита времени) автоматически будет освобождена память, занимаемая сценарием и закрыты все соединения MySQL кроме тех, которые были открыты через mysql_pconnect(если не ошибаюсь). После каждого запроса закрывать соединение не нужно, т.к. уходит очень много времени на повторное подключение, да и в случае ненадобности тоже трогать не нужно, ведь PHP самостоятельно закроет простое соединение по завершению сценария. Есть смысл очищать память от результатов запросов с помощью mysql_free_result.

Отслеживать
ответ дан 27 фев 2013 в 19:16
Андрей Аршинов Андрей Аршинов
2,529 2 2 золотых знака 16 16 серебряных знаков 41 41 бронзовый знак
Можно пул подключений использовать.
3 июн 2017 в 19:00

После каждого запроса этого делать не надо, так как после первого запроса следующие выполнятся не будут. Достаточно закрывать соединение после выполнения скрипта. Заодно прочитайте это: http://php.net/manual/ru/features.persistent-connections.php

Отслеживать
ответ дан 27 фев 2013 в 17:14
35 6 6 бронзовых знаков

@admin, спасибо за ответ, на ваши слова «Достаточно закрывать соединение после выполнения скрипта» — мне когда-то на Хэшкоде объясняли, что соединение само закрывается по завершении работы скрипта.

Как закрыть соединение с базой SQL в PHP: простые способы и советы

Чтобы закрыть соединение с базой данных SQL в PHP, вы можете использовать функцию mysqli_close() . Вот пример:

 // Подключение к базе данных $conn = mysqli_connect("localhost", "пользователь", "пароль", "имя_базы_данных"); // Ваш код работы с базой данных. // Закрытие соединения mysqli_close($conn); 

Этот код создает соединение с базой данных, выполняет необходимые операции, а затем закрывает соединение с помощью функции mysqli_close() . Закрытие соединения рекомендуется для освобождения ресурсов и предотвращения утечек памяти. Не забывайте закрывать соединение с базой данных после выполнения операций, чтобы поддерживать хорошую производительность и безопасность вашего приложения.

Детальный ответ

Как закрыть соединение с базой SQL в PHP?

Закрывание соединения с базой данных после завершения работы с ней является хорошей практикой, так как это помогает предотвратить утечку ресурсов и повысить производительность вашего приложения. В PHP есть несколько способов закрыть соединение с базой SQL, и в этой статье мы рассмотрим некоторые из них.

1. Использование функции mysqli_close

Если вы используете расширение mysqli для работы с базой данных MySQL, вы можете закрыть соединение с помощью функции mysqli_close. Эта функция принимает один обязательный параметр — идентификатор соединения (connection handle), который был открыт ранее.

 $connection = mysqli_connect("хост", "пользователь", "пароль", "база_данных"); // Ваш код работы с базой данных mysqli_close($connection); 

Вызов функции mysqli_close закроет соединение с базой данных, освобождая ресурсы и разрывая связь с сервером базы данных.

2. Использование функции mysqli_free_result

Если вы выполнили запрос к базе данных и получили результат, используя функцию mysqli_query или аналогичные функции, вы должны также освободить ресурсы, связанные с результатом запроса. Для этого можно использовать функцию mysqli_free_result. Она принимает один обязательный параметр — результат запроса.

 $connection = mysqli_connect("хост", "пользователь", "пароль", "база_данных"); $result = mysqli_query($connection, "SELECT * FROM таблица"); // Ваш код работы с результатом запроса mysqli_free_result($result); mysqli_close($connection); 

Вызов функции mysqli_free_result освободит память, занятую результатом запроса, и позволит повысить производительность вашего приложения.

3. Использование функции PDO::closeCursor

Если вы используете расширение PDO для работы с базой данных, вы можете закрыть соединение с помощью функции closeCursor. Она вызывается на объекте PDOStatement после использования метода execute для выполнения запроса.

 $pdo = new PDO("mysql:host=хост;dbname=база_данных", "пользователь", "пароль"); $statement = $pdo->prepare("SELECT * FROM таблица"); $statement->execute(); // Ваш код работы с результатом запроса $statement->closeCursor(); $pdo = null; 

Вызов функции closeCursor освободит ресурсы, связанные с результатом запроса, и закроет соединение с базой данных.

Заключение

Закрытие соединения с базой данных после завершения работы с ней является важным шагом для поддержания производительности вашего приложения и предотвращения утечки ресурсов. В этой статье мы рассмотрели несколько способов закрыть соединение с базой SQL в PHP. Выберите подходящий для вашего проекта и следуйте хорошим практикам программирования.

Как закрыть соединение с базой sql php

Открытые непостоянные соединения MySQL и наборы результатов автоматически закрываются при уничтожении их объектов. Явное закрытие открытых соединений и освобождение наборов результатов не обязательно. Однако рекомендуется закрыть соединение, как только скрипт завершит выполнение всех своих операций с базой данных, если ему ещё предстоит большая обработка после получения результатов.

Список параметров

Только для процедурного стиля: объект mysqli , полученный с помощью mysqli_connect() или mysqli_init() .

Возвращаемые значения

Функция всегда возвращает true .

Список изменений
Версия Описание
8.0.0 Функция теперь возвращает значение true . Ранее она возвращала значение false в случае возникновения ошибки.
Примеры

Пример #1 Пример использования mysqli::close()

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

$result = $mysqli -> query ( «SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3» );

/* Закройте соединение, как только оно становится ненужным */
$mysqli -> close ();

foreach ( $result as $row )

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

$result = mysqli_query ( $mysqli , «SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3» );

/* Закройте соединение, как только оно становится ненужным */
mysqli_close ( $mysqli );

foreach ( $result as $row )

Примечания

Замечание:

mysqli_close() не закрывает постоянные соединения. Для получения подробностей смотрите руководство по persistent connections.

Как закрыть соединение с базой sql php

MySQLi Procedural procedure:
To close the connection in mysql database we use php function mysqli_close() which disconnect from database. It require a parameter which is a connection returned by the mysql_connect function.

Syntax:

If the parameter is not specified in mysqli_close() function, then the last opened database is closed. This function returns true if it closes the connection successfully otherwise it returns false.

Каким способом правильно закрывать соединение с mysql PDO?

Странные у вас варианты ответов. Метода close у PDO нет в принципе, при чём тут mysqli_close непонятно.

В документации ответ дан и довольно недвусмысленно:

To close the connection, you need to destroy the object by ensuring that all remaining references to it are deleted—you do this by assigning NULL to the variable that holds the object. If you don’t do this explicitly, PHP will automatically close the connection when your script ends.

Удалите все ссылки на объект PDO и он закроет соединение. Можете присвоить NULL , можете сделать unset .

mysql_close

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

mysql_close() закрывает соедиение с базой данных MySQL, на которое указывает переданный указатель. Если параметр link_identifier не указан, закрывается последнее открытое (текущее) соединение.

Использование mysql_close() не необходимо для непостоянных соединений. Они автоматически закрываются в конце скрипта. Смотрите также высвобождение ресурсов.

Замечание: mysql_close() не может закрывать постоянные соединения, открытые функцией mysql_pconnect() .

Похожие публикации:

  1. Sql power architect как пользоваться
  2. Sql server profiler как пользоваться
  3. Sql база один пользователь как убрать
  4. Sql как выбрать первые 10 записей

Шаг 3. Подтверждение концепции: подключение к SQL с помощью PHP

Эта функция OpenConnection вызывается перед выполнением всех последующих функций.

 function OpenConnection() < $serverName = "tcp:myserver.database.windows.net,1433"; $connectionOptions = array("Database"=>"AdventureWorks", "Uid"=>"MyUser", "PWD"=>"MyPassword"); $conn = sqlsrv_connect($serverName, $connectionOptions); if($conn == false) die(FormatErrors(sqlsrv_errors())); return $conn; > 

Шаг 2. Выполнение запроса

Функция sqlsrv_query может использоваться для извлечения результирующего набора из запроса к базе данных SQL. Эта функция фактически принимает любой запрос и объект подключения, а затем возвращает результирующий набор для итеративного перебора с помощью sqlsrv_fetch_array().

 function ReadData() < try < $conn = OpenConnection(); $tsql = "SELECT [CompanyName] FROM SalesLT.Customer"; $getProducts = sqlsrv_query($conn, $tsql); if ($getProducts == FALSE) die(FormatErrors(sqlsrv_errors())); $productCount = 0; while($row = sqlsrv_fetch_array($getProducts, SQLSRV_FETCH_ASSOC)) < echo($row['CompanyName']); echo("
"); $productCount++; > sqlsrv_free_stmt($getProducts); sqlsrv_close($conn); > catch(Exception $e) < echo("Error!"); >>

Шаг 3. Вставка строки

В этом примере показано, как безопасно выполнить инструкцию INSERT и передать параметры. Значения параметров защищают приложение от внедрения кода SQL.

 function InsertData() < try < $conn = OpenConnection(); $tsql = "INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT" . " INSERTED.ProductID VALUES ('SQL Server 1', 'SQL Server 2', 0, 0, getdate())"; //Insert query $insertReview = sqlsrv_query($conn, $tsql); if($insertReview == FALSE) die(FormatErrors( sqlsrv_errors())); echo "Product Key inserted is :"; while($row = sqlsrv_fetch_array($insertReview, SQLSRV_FETCH_ASSOC)) < echo($row['ProductID']); >sqlsrv_free_stmt($insertReview); sqlsrv_close($conn); > catch(Exception $e) < echo("Error!"); >> 

Шаг 4. Откат транзакции

Этот пример кода демонстрирует использование транзакций, в которых можно:

  • начать транзакцию;
  • вставить строку данных, обновить другую строку данных;
  • зафиксировать транзакцию, если запросы на вставку и обновление выполнены успешно, или откатить транзакцию, если один из запросов вызвал ошибку.
 function Transactions() < try < $conn = OpenConnection(); if (sqlsrv_begin_transaction($conn) == FALSE) die(FormatErrors(sqlsrv_errors())); $tsql1 = "INSERT INTO SalesLT.SalesOrderDetail (SalesOrderID,OrderQty,ProductID,UnitPrice) VALUES (71774, 22, 709, 33)"; $stmt1 = sqlsrv_query($conn, $tsql1); /* Set up and execute the second query. */ $tsql2 = "UPDATE SalesLT.SalesOrderDetail SET OrderQty = (OrderQty + 1) WHERE ProductID = 709"; $stmt2 = sqlsrv_query( $conn, $tsql2); /* If both queries were successful, commit the transaction. */ /* Otherwise, rollback the transaction. */ if($stmt1 && $stmt2) < sqlsrv_commit($conn); echo("Transaction was commited"); >else < sqlsrv_rollback($conn); echo "Transaction was rolled back.\n"; >/* Free statement and connection resources. */ sqlsrv_free_stmt( $stmt1); sqlsrv_free_stmt( $stmt2); > catch(Exception $e) < echo("Error!"); >> 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *