32.3. Функции открытия и закрытия соединений
Перед началом работы с MySQL необходимо установить соединение, позволяющее получить доступ к полям и таблицам базы данных. После необходимо закрыть соединение. Правильно выполнять эти операции помогают следующие функции:
• mysql_connect(),
• mysql_pconnect(),
• mysql_close().
Чтобы установить соединение с MySQL-сервером, работающим на компьютере, необходимо воспользоваться функцией mysql_connect(). Ее синтаксис:
int mysql_connect ([string hostname [:port] [:/path/to/socket] [, string username [, string password]]])
Функция mysql_connect() возвращает MySQL-идентификатор связи при успешном выполнении, в противном случае возвращает нуль, что соответствует наличию ошибки. Значение параметра host может быть сетевым именем или IP-адресом. Он указывается следующим образом: host: port = 'localhost: 3306'. Username задает логин пользователя MySQL. Password задает пароль для username.
Строка hostname (имя сетевого узла) может также включать номер порта, т. е. hostname: port, или путь, К локальному узлу (lockalhost), т. е. : /path/to/socket.
Поддержка для :port была добавлена в РНР 3.0b4.
Поддержка для : /path/to/socket была добавлена в РНР 3.0.10.
Никакая новая связь не будет установлена, если второй запрос сделан к функции mysql_connect() с теми же самыми аргументами. Вместо этого идентификатор связи уже открытого соединения будет возвращен.
Соединение с сервером будет считаться закрытым, как Только выполнение сценария будет закончено, конечно при условии, что не произошло закрытие ранее вызовом функции mysql_close().
ВНИМАНИЕ
Если в функции mysql_connect() параметр hostname не задан, то подразумевается 'localhost'.
Если параметр username не задан, то подразумевается current user. В Windows ODBC текущий пользователь должен быть определен явно. В Unix подразумевается текущий логин.
Если параметр password не задан, то будут проверены только те записи в таблице пользователей, которые не имеют пароля. Это позволяет db-администратору настроить систему привилегий MySQL так, чтобы пользователь получал различные привилегии в зависимости от того, определен пароль или нет.
Рассмотрим пример использования функции mysql_connect
<?php
Slink = mysql_connect ("localhost", "username", "secret");
print ("Соединение успешно установлено");
mysql_close(Slink);
?>
В начале данного скрипта, чтобы получить доступ к имеющейся базе данных, при помощи функции mysql_connect() устанавливается соединение. Далее выполняем какие-то действия (в нашем случае — это печать) и после этого закрывается установившееся соединение при помощи функции mysql_close().
Функция mysql_connect() работает в РНР 3 и РНР 4.
Функция mysql_pconnect позволяет возвратить идентификатор связи при соединении с работающим сервером MySQL при положительном выполнении операций, в случае ошибки функция возвратит значение false.
Ее синтаксис:
int mysql_pconnect([string hostname [:port] [:/path/to/socket] [, string username [, string password]]])
Все параметры и аргументы, указывающиеся в функции mysql_pconnect(), подчиняются тем же правилам, что и для функции mysql_connect(), принципы работы которой были рассмотрены ранее.
Функция имеет работы, аналогичный функции mysql_connect(), однако существует важное отличие, соединение с сервером SQL не будет закрыто при завершении выполнения сценария, существующая связь останется открытой для дальнейшего использования. Функция mysql_close() не будет производить закрытие которое было установлено при помощи функции mysql_pconnect(). Именно поэтому данный вид соединения называется стойким.
После того как открытое соединение становится ненужным, т. е. все поставленные задачи выполнены, нужно закрыть соединение с MySQL-сервером. Для этого используют функцию mysql_close Ее синтаксис:
int mysql_close ( [int link_identifier] )
Чтобы было ясно, какое именно установившееся соединение необходимо закрыть, в функции mysql_close() в качестве параметра указывается идентификатор связи этого соединения. В случае положительного исхода, т. е. если операция закрытия прошла успешно, функция mysql_close() возвратит true, в противном случае — false.
Функцию mysql_close() можно не использовать при нестойком соединении, так как такие соединения автоматически закрываются в конце выполнения скрипта.
Это является существенным отличием от функции mysql_close() в С++. Функция mysql_close() в C++ закрывает соединение и должна быть вызвана после завершения всех операций, выполняемых через соединение с MySQL. Если это не сделать, поток, созданный функцией mysql_connect(), зависнет до окончания тайм-аута сервера. На сервере, работающем с сильной нагрузкой, это может быстро израсходовать много памяти, хотя нужно очень немного времени центрального процессора.
Поэтому можно сказать, что работа функции mysql_close() в РНР является заметно более эффективной, чем в описанном выше случае.
Обратите внимание еще раз, что функция mysql_close() не будет закрывать стойкие связи, созданные при помощи функции mysql_pconnect().
Рассмотрим пример:
<?php
$link = mysql_connect("kraemer", "marliesle", "secret");
print ("Соединениеустановлено успешно");
mysql_close($link);
?>
В приведенном примере функция mysql_close() закрывает установленное соединение, при этом в качестве идентификационного параметра используется указатель соединения $link. Вместо этого указателя могут быть какие-либо другие, при этом будет закрыто именно то соединение с сервером указатель которого и был задан в качестве параметра функции mysql_close().
Функция mysql_close() работает в РНР 3 и РНР 4.