Это оказывается сложнее, чем я думал, поэтому мне нужна ваша помощь.
Я знаю, что могу получить IP-номер посетителя веб-сайта несколькими разными способами, например следующим:
Код: Выделить всё
$_SERVER['REMOTE_ADDR']Залогом этого является скорость. Я знаю несколько способов получить IP-номер, но не знаю, как получить его БЫСТРО.
Мне нужна достаточно стабильная скорость в среднем ниже 35 миллисекунд, чем ниже тем лучше, конечно
Я прекрасно понимаю, что могу использовать тот же самый скрипт на другом сервере, скрутить его и затем получить IP-номер сервера - это то, что я делаю сейчас, однако это происходит довольно медленно, даже после оптимизации моего сценария завивки
Код: Выделить всё
file_get_contentscheckip.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'];Код: Выделить всё
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
Мобильная версия