将部分 fread 输出与 php 分隔为 Asterisk AMI



我有一个问题让我在最后几天都很忙。 我正在使用Asterisk AMI。

AMI 提供如下输出。

Event: RTCPSent
Privilege: reporting,all
Channel: SIP/1001-00000000
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: SIP/1001
ConnectedLineNum: <unknown>
ConnectedLineName: SIP/1001
Language: ja
AccountCode: 
Context: phones
Exten: 1000
Priority: 4
Uniqueid: 1535617422.0
Linkedid: 1535617422.0
To: 111.108.30.208:61987
From: 172.31.21.5:20687
SSRC: 0x5847ea3c
PT: 200(SR)
Event: RTCPReceived
Privilege: reporting,all
Channel: SIP/1001-00000000
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: SIP/1001
ConnectedLineNum: <unknown>
ConnectedLineName: SIP/1001
Language: ja
AccountCode: 
Context: phones
Exten: 1000
Priority: 4
Uniqueid: 1535617422.0
Linkedid: 1535617422.0
To: 172.31.21.5:20687
From: 111.108.30.208:61987
RTT: 0.0116
SSRC: 0x235022ee
PT: 200(SR)
Event: RTCPSent
Privilege: reporting,all
Channel: SIP/1000-00000001
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 1000
CallerIDName: SIP/1001
ConnectedLineNum: <unknown>
ConnectedLineName: SIP/1001
Language: ja
AccountCode: 
Context: phones
Exten: 
Priority: 1
Uniqueid: 1535617431.1
Linkedid: 1535617422.0
To: 111.108.30.208:61044
From: 172.31.21.5:20349
SSRC: 0x0cb019a0
PT: 200(SR)
Event: RTCPReceived
Privilege: reporting,all
Channel: SIP/1000-00000001
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 1000
CallerIDName: SIP/1001
ConnectedLineNum: <unknown>
ConnectedLineName: SIP/1001
Language: ja
AccountCode: 
Context: phones
Exten: 
Priority: 1
Uniqueid: 1535617431.1
Linkedid: 1535617422.0
To: 172.31.21.5:20349
From: 111.108.30.208:61044
RTT: 0.0115
SSRC: 0x00294823
PT: 200(SR)

我使用 fread(( 函数收集输出。

fread($fp, 8192);

[$fp是上面这样的输出]

这有效,但逐行给出输出。 获得此内容的正确方法是从空格行到空格行。

Event: RTCPReceived
Privilege: reporting,all
Channel: SIP/1001-00000000
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: <unknown>
CallerIDName: SIP/1001
ConnectedLineNum: <unknown>
ConnectedLineName: SIP/1001
Language: ja
AccountCode: 
Context: phones
Exten: 1000
Priority: 4
Uniqueid: 1535617422.0
Linkedid: 1535617422.0
To: 172.31.21.5:20687
From: 111.108.30.208:61987
RTT: 0.0116
SSRC: 0x235022ee
PT: 200(SR)

这样,我可以收集所需的信息并执行以下步骤。

使用fread功能可以做到这一点吗?

我需要阅读诸如谁拿起电话或挂断电话之类的信息。

您的意见将一如既往地受到高度赞赏

不,不可能。

您应该逐个读取循环中的行,直到获得空行并在需要时将其合并到缓冲区中。

通过将空格拆分为数组并检查错误日志来使其工作。这效果最好,让我有机会读出所有内容。

最新更新