Сетевые функции
Файлы и сети
🕛 01.11.2006, 13:29
ip2long Конвертация строки адреса IPv4 в число
int ip21ong (string ip_address)
Возвращает четырехбайтовое численное представление адреса IP v4 из строки (числа, разделенные точками, например: «127.0.0.1»).
$ip = gethostbyname("wvjw.php.net");
// получить IP адрес хоста echo
"Следующие URL эквивалентны:<bг>\n".
"http://www.php.net/. http://" Sip.
"/. и http://" .ip21ong($ip)."/<br>\n":
См. также Iong2ip().
Iong2ip
Конвертация числа в строку адреса IP v4
string Iong2ip (int proper_address)
Возвращает строковое представление IP-адреса (в формате: «ааа. bbb.ccc.ddd») из числового значения.
См. также ip2long().
gethostbyaddr
Получение имени хоста, соответствующего адресу IP string gethostbyaddr (string ip_address)
В аргументе указывается адрес IP в строковом формате. При ошибке возвращается ip_address. Заметьте: большинству IP-адресов в Интернете соответствует несколько имен (одно из них: localhost).
echo gethostbyaddr("127.001");
См. также gethostbyname().
gethostbyname
Получение IP-адреса хоста
string gethostbyname (string hostname)
print gethostbyname ("localhost");
// выведет: 127.0.0.1
См. также gethostbyaddr().
gethostbynamel
Получение списка IP-адресов, принадлежащих хосту
array gethostbynamel (string hostname)
Функция используется вместо gethostbynamez(), когда хост hostname имеет несколько сетевых интерфейсов с разными адресами.
См. также: gethostbyname(), gethostbyaddr(), checkdnsrr(), getmxrr() и раздел named справочной системы man.
getprotobyname
Определение номера порта, используемого протоколом1
int getprotobyname (string name)
В системах Unix соответствие портов и протоколов указывается в файле /etc/protocols.
См. также getprotobynumber().
getprotobynumber
Определение протокола порта
string getprotobynumber (int number)
См. также getprotobyname().
getservbyname
Определение порта Интернет-службы
Int getservbyname (string service, string protocol)
Возвращает номер порта, использующийся службой service. (В системах Uni\ это соответствие портов и служб указывается в файле /etc/services) В аргументе protocol указывается тип протокола - TCP или UDP.
echo getservbyname ("HTTP"."TCP");
// может вывести- 80
См. также getservbyportt().
getservbyport
Определение Интернет-службы, использующей порт
string getservbyport (int port, string protocol)
В аргументе protocol указывается тип протокола - TCP или UDP.
echo getservbyport(21."TCP"):
// обычно выводит ftp
echo getservbyport(23."TCP").
// обычно выводит: telnet
См. также getservbyname().
checkdnsrr
Проверка записи DNS
int checkdnsrr (string host [, string type])
Отправляет запрос DNS-сервсру для поиска записей, имеющихся для хоста host. Возвращает TRUE, если были найдены записи типа type, или FALSE в противном случае, а также при ошибке.
Аргумент type может иметь одно из следующих значений: A, MX, NS, SO A, PTR, CNAME, ANY. По умолчанию (если аргумент не указан) его значение MX.
Аргумент host может указываться строкой IP-формата с разделением точками, либо быть именем хоста.
См. также: getmxrr(), gethostbyaddr(), gethostbyname(), gethostbynaroe() и раздел named справочной системы Unix man.
getmxrr
Получение MX записи для Интернет-хоста
int getmxrr (string hostname, array mxhosts [, array weight]) Инициирует поиск в БД DNS записи MX (почтовый сервер домена) для хоста hostname. Возвращает TRUE, если запись найдена; FALSE, если поиск прошел безуспешно.
Список записей MX заносится в массив mxhosts. Если указан массив weight, он заполняется дополнительной информацией о записях.
См. также: checkdnsrr(), gethostbyname(), gethostbynamel(), gethostbyaddr() и раздел named справочной системы Unix man.
Сетевая отладка PHP
debugger_off
Блокировка внутреннего отладчика РНР
int debugger_off(void):
Отладчик пока находится в стадии разработки (для РНР 4).
debugger_ on
Разрешение использования внутреннего отладчика РНР
int debugger_on (string address)
Подключает отладчик но адресу address (на удаленном сервере). Отладчик пока находится в стадии разработки, но он доступен для РНР версии 3.
define_ syslog_variab!es
Инициализация константы диспетчера системных событий
void define_syslogj/araibles (void)
Эти константы в дальнейшем используются функциями системных событий (syslog).
См. также: openlog(), syslog() и closelog().
openlog
Подключение к диспетчеру системных событий (system logger)
int openlog (string ident. int option, int facility)
Функция не обязательна для использования. Она автоматически (при необходимости) вызывается функцией syslog(), и в этом случае аргумент ident (по умолчанию) используется со значением FALSE. Строка ident будет добавляться к каждому отсылаемому сообщению. Обычно используется при необходимости явной передачи аргументов option и facility.
Аргумент option используется для указания параметров при генерации системного события (log message). Могут использоваться следующие значения:
LOG_CONS - в случае ошибки при посылке сообщения оно выводится непосредственно в системную консоль;
LOG_NDEIAY - незамедлительно подключиться-к диспетчеру системных событий:
LOGJDDELAY - (по умолчанию) отложить подключение до посылки первого сообщения;
LOG_PERROR - также выводить сообщения в стандартный поток ошибок;
LOG_PID - включать в сообщения идентификатор процесса (РШ).
Возможно одновременное указание нескольких значений при помощи битового оператора ИЛИ, например: LOG_CONS | LOG_NDELAY LOG_PID.
Аргумент facility указывает вид приложения, посылающего сообщение. Это влияет на их обработку системой;
LOG_AUTH - сообщения безопасности/авторизации (целесообразнее использовать LOG_AUTHPRIV на тех системах, где эта константа определена);
LOG_AUTHPRIV - персональные сообщения бсчогасности/авторнза-ции;
LOG_CRON - служба таймера (демоны сгоп и at);
LOGJDAEMON - другие системные службы (daemons);
LOGJCERN - сообщения ядра системы (kernel);
LOG_LOCALO ... LOG_LOCAL7 - зарезервировано для локального использования;
LOGJ.PR - подсистема линейного принтера;
LOG_MAIL - почтовая подсистема (mail);
LOG_NEWS - подсистема новостей USENET;
LOG_SYSLOG - внутренне генерируемые сообщения (демоном syslogd);
LOGJJSER - сообщения, порождаемые приложениями (user-level);
IOGJJUCP - подсистема UUCP.
См. также: define_syslog_variables(), syslog() и closelog().
closelog
Отключение от диспетчера системных событий
int closelog(void)
Использование функции необязательно.
См. также: define_syslog_variables(), syslog() и openlog().
syslog
Посылка системного сообщения
Int syslog (int priority, string message)
i В аргументе message укалывается содержание сообщения. Пары символов %т в этом сообщении заменяются на строку текущего сообщения об ошибке (strerror), представляющую значение еггпо. Аргу-/ мент priority является комбинацией уровня приложения и приоритета события. Его возможные значения (в порядке понижения приоритета):
LOG_EMERG - неработоспособность системы;
LOG_ALERT - необходимы срочные действия;
LOG_CRIT - критическое состояние;
LOG_ERR - ошибка;
LOG_WARNING - предупреждение;
LOG_NOTICE - значимое сообщение;
LOG_INFO - информационное сообщение;
LOG_DEBUG - сообщение отладки.
define_syslog_vcr ablest);
GpenlogC'mySrnpiog".
LOG_PID | LOG_PERROR. LOGJ.OCALO):
// ... if (!authorized_client())
{ // процедура авторизации
// неавторизирован! (сохранить сообщение об этом)
Sacress = date("Y/m/d H:i:s").
syslog(LOG_WARNING."Unauthorized client:
Saccess
$REMOTE_AODR ($HTTP_USER_AGENT)"): )
closelog():
В системной документации должно быть указано, как установить собственный обработчик системных событий.
На системах Winch ws NT служба syslog эмулируется как Event Log.
См. также: define_syslog_variables(), openlog(), closelog().
Общий низкоуровневый сетевой интерфейс
fsockopen
Открытие сокета Интернета или домена Unix
int fsockopen (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]])
Инициирует поток подключения к Интернет (AF_INET, используя TCP или UDP) или в домене Unix (AF_UNIX). Для доменов Интернет открывает сеанс подключения (TCP socket connection) с компьютером hostname через порт port. Значение hostname может быть либо полным доменным именем (FQDN), либо адресом IP. Для подключений UDP необходимо явно указывать протокол, например: «udp:// hostname». Для доменов Unix hostname может содержать путь к соке-ту, тогда значение port должно быть равно 0. Необязательным аргументом timeout можно указать допустимый промежуток времени подключения в секундах.
Функция возвращает дескриптор файла, как при открытии локального файла, который затем может использоваться в функциях файлового ввода/вывода: fgets(), fgetss(), fputs(), fclose() и feof().
При возникновении ошибки возвращает FALSE и устанавливает системные значения номера и сообщения причины ошибки в аргументы (они должны передаваться по ссылке) errno и errstr. Если возвращается FALSE, а аргумент errno равняется 0, то это означает, что ошибка произошла до вызова функции (возможная причина в инициализации сокета).
По умолчанию сеанс открывается в эксклюзивном (блокированном) режиме.
См. функцию socket_set_blocking().
$fp = fsockopen
("www.php.net". 80. &$errno. &$errstr. 30).
if (!$fp) {
echo "Serrstr ($errno)<br>\n". } else {
fputs ($fp. "GET / HTTP/1 0\r\n\r\n");
while (!feof($fp)) { echo fgets ($fp.l28).
fclose ($fp):
Следующий пример демонстрирует получение даты и времени от UDP службы «daytime» (порт 13) на локальной машине.
$fp = fsockopen
("udp://127.0.0.1". 13. &$errno. Merrstr):
If (!$fp) {
echo "ERROR: Serrno - $errstr<br>\n", }
else { fwnte($fp,"\n");
echo fread($fp. 26):
fclose($fp): }
См. также: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() и feof().
pfsockopen
Открытие устойчивого подключения
j int pfsockopen (string hostname, int port [, int errno _jy [, string errstr [, int timeout]]])
Функция полностью подобна fsockopen() с той разницей, что подключение не закрывается по окончании сценария.
socket_get_status
Получение статуса подключения
array socket_get_status (resource socket_get_status)
Возвращает в массиве информацию об открытом подключении. В настоящее время возвращаются четыре элемента:
timed_out (bool) - длительность периода ожидания ответа (тайм-аут);
blocked (bool) - заблокированность;
eof (bool) - получен ли символ EOF;
unread_bytes (int) - число байтов, оставшихся в буфере.
См. также: accept_connect(), bind(), connect(), listen(), strerror().
socket_set _timeout
Установка периода timeout для сокета
bool socket_set_timeout (int socket_descriptor, int seconds, int microseconds)
Устанавливает для подключения socket_descriptor длительность периода ожидания ответа, это сумма аргументов seconds (секунды) и microseconds (микросекунды).
$fp = fsockopen("www.php net". 80).
if(!$fp) {
echo "Ошибка подключения \n":
} else { fputs($fp."GET /
HTTP/1 0\n\n"):
$start = time():
socket_set_t i meout($ fp. 2):
$res = fread($fp. 2000):
var_dump(socket_get_status($fp))
fclose($fp);
print $res: }
См. также: fsockopen() и fopen().
socket_set_blocking
Установка режима блокирования
int socket_set_blocking (int socket_descriptor, int mode)
Если в аргументе mode указывается значение FALSE, то обозначенный дескриптором socket_descriptor сокет переводится в неблокируемый режим. Противное происходит при TRUE. Это воздействует на вызовы функций чтения, подобные fgets(), которые исполняются незамедлительно в неблокированном режиме или, иначе, ожидают разблокировки (получения читаемых данных).