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

Тема в разделе "PHP Pro", создана пользователем Albert22, 5 ноя 2009.

Статус темы:
Закрыта.
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Привет!

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

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

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    как вариант использовать удаленный сервис, показывающий ip-адрес.
     
  3. black.cat

    black.cat

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

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Физически выделенный сервер, должно сработать. Сейчас попробую.

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

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

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Вот, попробуй это:
    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 секунд.
     
    Albert22 нравится это.
  6. ZCFD

    ZCFD

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

    т.е. просто запускай скрипт из вне
     
    Albert22 нравится это.
Статус темы:
Закрыта.