讲师中心 微信公众号
AI工具推荐 视频效率加速

php怎样实时刷新本机ip_php定时检测ip变化法【步骤】

夜伟酱_1405

夜伟酱_1405

发布时间:2026-01-27 14:06:09

|

1191人浏览过

|

来源于php中文网

原创

推荐使用 file_get_contents() 调用 https://api.ipify.org 等可信 HTTP 接口获取本机出口 IPv4 地址,需设置超时、错误处理和 IP 校验,避免依赖 gethostbyname 或 $_SERVER['SERVER_ADDR']。

php怎样实时刷新本机ip_php定时检测ip变化法【步骤】

如何用 PHP 获取本机当前 IPv4 地址(非 127.0.0.1)

PHP 本身没有直接暴露“本机公网 IP”的函数,$_SERVER['SERVER_ADDR'] 返回的是 Web 服务绑定的本地地址(常为 127.0.0.1 或内网 IP),不能代表对外出口 IP。要获取真实出口 IP,必须依赖外部服务或系统命令。

推荐做法是调用可信的 HTTP 接口,例如:

  • https://api.ipify.org(纯文本,只返回 IPv4)
  • https://ifconfig.me/ip(响应快,无额外头)

注意:不要用 gethostbyname(gethostname()),它解析的是主机名对应的 A 记录,通常仍是 127.0.0.1 或局域网地址。

用 file_get_contents() 实现轻量级 IP 检测

最简方式是用 file_get_contents() 抓取公开接口,配合超时和错误处理:

立即学习“PHP免费学习笔记(深入)”;

$opts = [
    'http' => [
        'method' => 'GET',
        'timeout' => 3,
        'user_agent' => 'PHP-IP-Detector/1.0',
    ]
];
$context = stream_context_create($opts);
$ip = @file_get_contents('https://api.ipify.org', false, $context);
if ($ip === false || !filter_var(trim($ip), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
    $ip = 'unknown';
}
echo trim($ip);

关键点:

  • 必须设 timeout,否则网络不通时会卡住脚本
  • 用 @ 抑制警告,再手动判断 false 和有效性
  • 别忘了 trim(),有些接口末尾带换行

定时检测 IP 变化:用 shell 脚本 + PHP 配合 crontab

PHP 不适合长期驻留做轮询,应交给系统级定时任务驱动。典型流程是写一个 PHP 脚本输出当前 IP,再用 shell 对比上一次记录:

财经HTML高端海报生成
财经HTML高端海报生成

复杂得财经如何变成清晰,适合手机看的海报?如何加上你的IP

下载

1. 创建 /path/to/check-ip.php,末尾输出纯 IP(不带 HTML、不 echo 其他内容)

2. 写 shell 脚本 check-ip.sh:

#!/bin/bash
IP_FILE="/tmp/last-ip.txt"
CURRENT_IP=$(php /path/to/check-ip.php 2>/dev/null | tr -d '\r\n')
if [ -f "$IP_FILE" ]; then
    LAST_IP=$(cat "$IP_FILE")
    if [ "$CURRENT_IP" != "$LAST_IP" ]; then
        echo "IP changed: $LAST_IP → $CURRENT_IP"
        echo "$CURRENT_IP" > "$IP_FILE"
        # 这里可追加通知逻辑,如 mail / webhook
    fi
else
    echo "$CURRENT_IP" > "$IP_FILE"
fi

3. 加入 crontab(每 5 分钟执行一次):

*/5 * * * * /path/to/check-ip.sh >> /var/log/ip-check.log 2>&1

常见失败原因与绕过限制的方法

很多用户卡在「本地开发环境无法获取公网 IP」——这很正常,因为家用宽带没有固定公网 IP,且路由器做了 NAT。此时 curl https://api.ipify.org 返回的是你家路由器的 WAN 口 IP,但该 IP 可能被运营商回收、复用,甚至被封禁。

如果你实际想监控的是「服务器是否被分配了新 IP」,请确认:

  • 运行脚本的机器是否有公网路由权限(云服务器 OK,家庭 NAS 通常不行)
  • 防火墙是否放行出站 HTTPS(443)
  • 某些 IDC 禁止频繁请求第三方 API,可加随机延迟或换备用接口(如 https://icanhazip.com)
  • PHP 是否禁用了 allow_url_fopen?若禁用,改用 curl_init()

真正需要实时感知变化的场景(比如动态 DNS 更新),建议直接调用服务商提供的 API(如阿里云 DescribeEipAddresses),而不是靠轮询公网接口——后者不可靠,也容易被限流。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3803

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

895

2023.10.30

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3208

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5209

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3869

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

486

2026.01.19

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3823

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

954

2023.11.14

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

20

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn