在PHP中为Asterisk清除fopensock流缓冲区/历史记录

时间:2016-05-27 21:33:04

标签: php asterisk

我使用fopensock()通过PHP连接到Asterisk,然后使用fputs()和fget()从CLI读取/写入,例如:

$socket = fopensock('127.0.0.1',port, $errno, $errstr, 1); //connect
fputs($socket,"Action: Login\r\nUserName: mark\r\nSecret: test\r\n\r\n"); //login
fputs($socket,"Action: Command\r\nCommand: core show channel $channel\r\n\r\n"); //command
$line = fgets($socket); //read output

这样可以正常工作,但是我无法弄清楚如何清除流缓冲区/历史记录而不会在每次发出新命令时注销并重新登录。

我试过fflush($socket),但这似乎没有任何效果。

当我尝试truncate($socket,ftell($socket))时,我收到错误Can't truncate this stream!

1 个答案:

答案 0 :(得分:0)

如果你需要刷新读取流,最简单的方法就是在没有阻塞的情况下阅读,直到你有信息。

发送后,您无法从写入脚本中删除信息。