Получить внешний IP-адрес локального сервера в php, БЫСТРОPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Получить внешний IP-адрес локального сервера в php, БЫСТРО

Сообщение Anonymous »

Мне нужно получить внешний IP-адрес моего сервера.
Это оказывается сложнее, чем я думал, поэтому мне нужна ваша помощь.
Я знаю, что могу получить IP-номер посетителя веб-сайта несколькими разными способами, например следующим:

Код: Выделить всё

$_SERVER['REMOTE_ADDR']
Однако это не относится к серверу, поскольку он ответит «127.0.0.1», что бесполезно, поскольку это не внешний IP-адрес. .
Залогом этого является скорость. Я знаю несколько способов получить IP-номер, но не знаю, как получить его БЫСТРО.
Мне нужна достаточно стабильная скорость в среднем ниже 35 миллисекунд, чем ниже тем лучше, конечно
Я прекрасно понимаю, что могу использовать тот же самый скрипт на другом сервере, скрутить его и затем получить IP-номер сервера - это то, что я делаю сейчас, однако это происходит довольно медленно, даже после оптимизации моего сценария завивки

Код: Выделить всё

file_get_contents
работает еще медленнее.
checkip.dyndns.com или другой сервер особо не влияют.
Не говоря уже о непостоянстве, за 5 сгибаний оно составляет в среднем около 0,07 секунды.

Код: Выделить всё

   $ip_json = trim( file_get_contents('https://ipinfo.io/json') ); $ip_arr = json_decode($ip_json,true); echo $ip_arr['ip'];
это намного медленнее: требуется примерно в 2–4 раза больше времени, чем завивка.

Код: Выделить всё

gethostbyname()
не будет работать, поскольку он не привязан к доменному имени

Код: Выделить всё

json_encode(net_get_interfaces(), JSON_PRETTY_PRINT)
не будет работать, поскольку он находится за маршрутизатором
Я исследовал использование exec($command); , чтобы посмотреть, смогу ли я получить его из командной строки, используя ipconfig и все, что я мог придумать, но, похоже, его там тоже нет.
Я заметил это, а не curl, я мог бы ускорить процесс:

[*]используя XMLHttpRequest в javascript для возврата $_SERVER['REMOTE_ADDR'] с другого сервера, когда я нажмите кнопку, которая загружает, например, новую страницу.
[*]возьмите номер IP и выполните еще один XMLHttpRequest как публикацию в локальном файле php.
[*]сохраните IP-номер в качестве сеанса $_SESSION['ip'] = $_POST['ip'];, а затем используйте переменную сеанса.
[*]Возобновите фактическую функциональность кнопки JavaScript. в обратном вызове
[*]используйте номер IP в exec($command); в php, чтобы получить фактический внешний IP-номер.

Это запутанный процесс, но он получает IP-номер примерно в три раза быстрее, чем curl.
Однако это все равно намного медленнее, чем если бы я мог найти это где-то локально.
И это еще медленнее, чем загрузка iframe с другого сервера, который говорит мне 2 вещи: 1. его можно получить намного быстрее и 2. нужные мне данные верны есть, но я не знаю, как получить к нему доступ из внешнего источника в Chrome.
Я подумывал о том, чтобы использовать другие языки программирования и создать что-нибудь с помощью exec команда, перенаправление запроса другого сервера на размещение заголовка в перенаправленном URL-адресе, свертывание серверов имен и т. д., но на данный момент это только теоретически.
Можно ли найти внешний IP сервера по-быстрому? В идеале локально, а если нет, то каким-нибудь более быстрым способом?
Можно ли воспроизвести, как браузер извлекает контент для iframe?

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-php-fast
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»