У меня есть быстрое приложение AGI, которое зацикливается на некоторых сценариях. Разница в том, что при запуске канала локально запущенные сценарии AGI пропускают звёздочку.
В случае сетевого AGI, если канал зависает, продолжающий работу сценарий agi и циклы канала ожидают завершения этого сценария.
Когда канал зависает, звездочка отправляет сообщение «HANGUP» на стандартный вывод, но я использую синхронизирующий файл phpagi lib, который пропускает его. Итак, мой вопрос:
Как bind готов прочитать событие stdin и вызвать функцию обратного вызова (которая обнаружит возможное зависание)?
Как вернутьданные в stdin, если нет обнаружения зависания?
Сначала я пытаюсь найти простой способ решить эту проблему
Мой тестовый код выглядит следующим образом
while( 5 < 6)
{
$data = $agi->request;
$chan = $data['agi_channel'];
$agi->Verbose(print_r($chan,1));
$res = $agi->exec('Wait','5');
$agi->Verbose('res = '.print_r($res,1));
$res = $agi->exec('Playback',$path);
$agi->Verbose('res = '.print_r($res,1));
$var = 'ret.'.time();
$res = $agi-> exec('Read',$var.','.$path.','.$max);
$agi->Verbose('res = '.print_r($res,1));
unset($res);
}