作者isolatorAY (Isolator_AY)
看板PHP
标题[请益] 解析container stats与log
时间Sun Aug 7 18:07:58 2022
最近在尝试透过php curl抓取docker remote api传出的JSON显示在自己的网页上,但是遇
上一些问题
我是利用docker composer同时启动两个container,分别是nginx 1.23与php 7.4-fpm
第一个问题是
ip/containers/$containerID/logs?stdout=true
在抓nginx的log可以看到一些资讯,但是从php容器得到的却是空字串
第二个问题是
ip/containers/$containerID/stats
直接丢浏览器网址栏是持续进行每秒更新一次的..呃..是叫streaming吗?
利用跟前面取得log、容器列表等等同样的curl处里方式却会直接得到一个空值字串,请问
这种要如何正常的解析呢?
另外就是有尝试利用网路上的JSON parser先解析直接丢浏览器得到的JSON 资料,发现除了
最开始的第一笔资料外,後续更新的都会在"precpu_stats"中包含了前一次的percpu_usage
,而网路上的JSON parser会将这里标记为语法错误
请问这种是不是用php json_decode()就会无法转换成阵列?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.129.183 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1659866880.A.F6B.html
1F:→ zx4109: 有 sample code 吗? 08/13 01:06
2F:→ zx4109: 所以有两个 API: log / stats ? 08/13 01:07
3F:→ zx4109: 然後你的意思是在 PHP 取不到 nginx 的 access log 08/13 01:11
4F:→ isolatorAY: 第一个问题解决了,只要URL後面加上detail=true就好 08/17 13:50
5F:→ isolatorAY: 第二个问题的程式大致上是这样 08/17 13:52
6F:→ isolatorAY: $url=$ip."containers/$dockerID/stats"; 08/17 13:53
7F:→ isolatorAY: $ch=curl_init(); 08/17 13:57
8F:→ isolatorAY: curl_setopt()有四个参数,returntransfer=true 08/17 13:57
9F:→ isolatorAY: timeout=50 08/17 13:57
10F:→ isolatorAY: url=$url 08/17 13:57
11F:→ isolatorAY: httpheader contenttype,accept都是application/json 08/17 13:57
12F:→ isolatorAY: $output=curl_exec($ch) 08/17 13:58
13F:→ isolatorAY: var_dump($output)得到bool(false) 08/17 13:58