Как в скрипте получить ip-адрес сервера?

Статус
В этой теме нельзя размещать новые ответы.

Albert22

Старатель
Регистрация
30 Мар 2008
Сообщения
270
Реакции
11
Привет!

Да, я знаю про $_SERVER['SEVER_ADDR'], но скрипт выполняется по крону, и в результате массив $_SERVER содержит вот что:
Array
(
[USER] => root
[HOME] => /root
[LOGNAME] => root
[PATH] => /usr/bin:/bin
[SHELL] => /bin/sh
[PWD] => /root
[PHP_SELF] => /var/home/.../script.php
[SCRIPT_NAME] => /var/home/.../script.php
[SCRIPT_FILENAME] => /var/home/.../script.php
[PATH_TRANSLATED] => /var/home/.../script.php
[DOCUMENT_ROOT] =>
[REQUEST_TIME] => 1257436801
[argv] => Array
(
[0] => /var/home/.../script.php
)

[argc] => 1
)
Насколько я помню, $_SERVER появляется если запрос к скрипту осуществлён через Апач. Можно конечно попытаться устроить что-то вроде запроса скриптом самого себя посредством file_get_contents(урл), но опять же, где взять этот урл?

Крон вызывается командой (через ISPmanager:(
/usr/local/bin/php /var/home/.../script.php >/dev/null 2>&1
Может её переписать как-то?
Подскажите пожалуйста
Заранее спасибо!
 

Sanuch

Гуру форума
Регистрация
24 Май 2009
Сообщения
207
Реакции
70
как вариант использовать удаленный сервис, показывающий ip-адрес.
 

black.cat

Мастер
Регистрация
13 Ноя 2008
Сообщения
200
Реакции
32
PHP:
$myIP = gethostbyname(trim(`hostname`));
если это конечно возможно с точки зрения хостера...
 

Albert22

Старатель
Регистрация
30 Мар 2008
Сообщения
270
Реакции
11
PHP:
$myIP = gethostbyname(trim(`hostname`));
если это конечно возможно с точки зрения хостера...
Физически выделенный сервер, должно сработать. Сейчас попробую.

Добавлено через 6 минут
Есть, выводит IP-адрес. Посмотрим как из-под крона будет.

Добавлено через 27 минут
Работает, спасибо.
Единственный вопрос — стабильность этого метода.
Откуда он берёт значение? Из DNS?
 

potuga

Гуру форума
Регистрация
22 Сен 2009
Сообщения
375
Реакции
98
Вот, попробуй это:
PHP:
<?php
function getAddrByHost($host, $timeout = 3) {
   $query = `nslookup -timeout=$timeout -retry=1 $host`;
   if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
      return trim($matches[1]);
   return $host;
}
?>
Здесь видно откуда что берется, и можно поставить свой таймаут. А на gethostbyname таймаут, кажется, 8 секунд.
 

ZCFD

Мой дом здесь!
Регистрация
16 Янв 2008
Сообщения
989
Реакции
458
можешь в крон записать другой вызов
GET Для просмотра ссылки Войди или Зарегистрируйся к скрипту/crop.php >null
варианты - цпуе и иже с ними
тогда в $_SERVER['SEVER_ADDR'] все будет как нужно

т.е. просто запускай скрипт из вне
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху