我使用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!
答案 0 :(得分:0)
如果你需要刷新读取流,最简单的方法就是在没有阻塞的情况下阅读,直到你有信息。
发送后,您无法从写入脚本中删除信息。