Здравствуйте.
Разбираюсь с mysqli
, в частности с этим примером:
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* проверка подключения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
if ($result = mysqli_query($link, $query)) {
/* выборка данных и помещение их в массив */
while ($row = mysqli_fetch_row($result)) {
printf ("%s (%s)\n", $row[0], $row[1]);
}
/* очищаем результирующий набор */
mysqli_free_result($result);
}
/* закрываем подключение */
mysqli_close($link);
?>
И напросился вопрос: зачем нужно очищать результат набора, mysqli_free_result($result);
, закрывать подключения mysqli_close($link);
и чем плохо, если этого не делать?
Непонятно, откуда предыдущий оратор вообразил какой-то "таймаут".
Соединение с БД закрывать не надо - оно закроется само по окончании работы скрипта. Сразу. БЕЗ каких-либо "таймаутов".
Резалтсет в большинстве случаев очищать не нужно, поскольку как только закончит выполнение вызвавшая его функция, он так же обнулится.
Незакрытые соединения прибьются по таймауту. Но если таких подключений будет очень много, система будет тормозить очень сильно, так как всё это потребляемые ресурсы. Поэтому "уходя, гасите свет". mysql_options php.su и оф. доки dev.mysql.com/doc/mysql-options
Рекомендую для общего развития установить VirtualBox с *nix системой, установить веб-сервер+mysql и поиграться с настройками, чтобы наглядно увидеть, что и как работает.
mysqli_free_result - очищает используемый блок памяти.
Если простыми словами то - при выполнения кода, к примеру запрос съел 100мб памяти и не была применена команда mysqli_free_result то если дальше по коду есть ещё запросы то они будут ещё дожирать память в дополнение к уже используемой. А если выполним mysqli_free_result то память занятая запросом очистится и мы сможем повторно её использовать в этом же коде.
Если у Вас в выполняемом коде один запрос, то mysqli_free_result необязателен, так как при завершении выполнении кода память всё равно очистится, но если по коду будет множество запросов то лучше очищать используемую память.
Пример 1:
php-код
1 sql-запрос # использовал 10мб памяти
php-код
2 sql-запрос # использовал 5мб памяти
В итоге получается что для выполнения кода потребовалось 15мб памяти, так как используемую память мы не очищали и она содержала первый запрос.
Пример 2:
php-код
1 sql-запрос # использовал 10мб памяти
mysqli_free_result (очищает уже задействованные 10мб памяти в которые можно записать последующие запросы)
php-код
2 sql-запрос # использовал 5мб памяти
Для выполнения кода потребовалось 10мб памяти, так как мы очистили память от первого запроса и записали в неё второй.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В моем графическом приложение есть текстовое поле(txtField) и кнопка "Search"При запуске приложения, открывается приложение и пользователь может...
Вроде бы легкая задача, но в API не нашел подобного, либо плохо искалjava