Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

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.

<< Предыдущий параграф Следующий параграф >>
Оглавление