全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php如何实时监控硬件状态_php定时轮询获取传感器最新数据【详解】

不能。PHP是服务端脚本语言,无权直接访问/sys/class/hwmon等底层硬件节点,必须依赖有权限的守护进程(如Python/C或shell脚本)采集数据并写入共享文件,PHP仅读取该文件快照。

PHP 能不能直接读取硬件传感器数据

不能。PHP 是服务端脚本语言,没有权限直接访问 /sys/class/hwmon/proc/sys/dev 或 USB 温度计等底层设备节点。强行用 exec("cat /sys/class/hwmon/hwmon0/temp1_input") 可能失败,原因包括:PHP 运行用户(如 www-data)无读取权限、SELinux/AppArmor 拦截、内核模块未加载。

必须依赖系统级代理程序采集数据

真实可行的方案是:用有权限的守护进程(如 Python/C 二进制)持续读取传感器,写入共享位置;PHP 只负责读取这个“快照”。推荐路径:

  • lm-sensors + sensors -u 定时输出 JSON 到 /var/run/sensor-state.json
  • 或写一个轻量级 systemd 服务,每 2 秒调用 vcgencmd measure_temp(树莓派)并追加到 /tmp/cpu_temp.log
  • PHP 用 file_get_contents() 读取该文件,不解析原始设备节点

示例代理脚本(保存为 /usr/local/bin/sensor-poller):

#!/bin/bash
while true; do
  echo "{\"cpu_temp\": $(vcgencmd measure_temp | sed 's/temp=//; s/\'C//'), \"ts\": $(date -u +%s)}" > /tmp/sensor.json
  sleep 2
done

PHP 定时轮询的陷阱与绕过方法

浏览器端 JS 轮询 PHP 接口看似“实时”,但实际受 HTTP 超时、PHP-FPM 子进程生命周期、OPcache 缓存影响。常见问题:

  • file_get_contents("/tmp/sensor.json") 返回空或旧内容 → 确保代理进程在运行,且 PHP 用户有读权限:sudo setfacl -m u:www-data:r /tmp/sensor.json
  • 并发请求导致重复读取 → 不要每次请求都重新打开文件,可用 realpath() + filemtime() 判断是否需重读
  • JSON 解析失败 → 代理写入可能被中断,加 json_last_error() === JSON_ERROR_NONE 校验

最小可用 PHP 读取逻辑:

 (float)$data['cpu_temp'], 'ts' => (int)$data['ts']]);
    } else {
        http_response_code(503);
        echo json_encode(['error' => 'invalid sensor data']);
    }
} else {
    http_response_code(503);
    echo json_encode(['error' => 'cannot open sensor file']);
}

替代方案:用 WebSocket 实现真实时推送

如果必须避免轮询,就得跳出 PHP 单线程模型。可行组合:

  • WorkermanSwoole 启一个常驻 WebSocket 服务器,在后台定期执行 shell_exec("sensors -u")
  • 前端用 new WebSocket("ws://localhost:1234") 连接,服务端每 3 秒广播一次解析后的温度对象
  • 注意:Swoole 的 Process::signal() 可监听 SIGUSR1 手动触发重采样,比死循环更可控

关键点:PHP 本身不“监控”硬件,它只是管道末端。真正的采集必须交由 OS 层可信进程完成,否则权限、原子性、稳定性全不可控。


# php  # linux  # python  # js  # 前端  # json  # 浏览器  # app  # websocket  # usb  # workerman 


相关文章: 在线制作视频网站免费,都有哪些好的动漫网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  ,想在网上投简历,哪几个网站比较好?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  建站之星安装后如何自定义网站颜色与字体?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  建站主机与虚拟主机有何区别?如何选择最优方案?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  网站制作公司排行榜,四大门户网站排名?  如何在阿里云ECS服务器部署织梦CMS网站?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  海南网站制作公司有哪些,海口网是哪家的?  ui设计制作网站有哪些,手机UI设计网址吗?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何快速搭建FTP站点实现文件共享?  Swift开发中switch语句值绑定模式  如何用IIS7快速搭建并优化网站站点?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何通过山东自助建站平台快速注册域名?  网站制作难吗安全吗,做一个网站需要多久时间?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  建站VPS推荐:2025年高性能服务器配置指南  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  个人网站制作流程图片大全,个人网站如何注销?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  网站制作网站,深圳做网站哪家比较好?  如何在万网开始建站?分步指南解析  如何确认建站备案号应放置的具体位置?  如何在阿里云通过域名搭建网站?  建站主机如何选?性能与价格怎样平衡?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过PHP快速构建高效问答网站功能?  建站之星如何取消后台验证码生成?  如何通过服务器快速搭建网站?完整步骤解析  如何通过西部建站助手安装IIS服务器?  宝塔新建站点报错如何解决?  如何挑选高效建站主机与优质域名?  自助网站制作软件,个人如何自助建网站?  建站ABC备案流程中有哪些关键注意事项?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  python的本地网站制作,如何创建本地站点?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何在万网自助建站中设置域名及备案?  网站制作新手教程,新手建设一个网站需要注意些什么?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  定制建站流程步骤详解:一站式方案设计与开发指南  杭州银行网站设计制作流程,杭州银行怎么开通认证方式? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。