Моя идея заключается в том, что я хочу выполнить PHP-скрипт в абонентской группе Asterisk. Он работает как демон / процесс, который получает значения от Asterisk и что-то с ними делает. Но когда я выполняю команду system (php script.php) , Asterisk останавливается и не переходит к следующему шагу абонентской группы. Причина в том, что, я полагаю, script.php имеет внутри цикл "while (1) {...}", и Asterisk ожидает его окончания ...
Не могли бы вы мне помочь и показать какое-то решение, как запустить внешний скрипт "php-loop" и выполнить шаги extensions.conf одновременно?
extensions.conf
[internal]
exten => 100,1,Set(CallerId=${CALLERID(num)}) ;get number
exten => 100,n,System(php script.php ${CallerId}) ;execute php script with argv[1]
;now the script.php should run at the background and below part
;should be execute like in ordinary context
exten => 100,n,Dial(SIP/100)
exten => 100,n,Hangup()
script.php
#!/usr/bin/php
<?php
$num = argv[1]; //the value from [internal] in the extensions.conf
while(1) { //start the loop
/*
* do something in the infinite loop and END it IF something happen
* e.g. $someVal == 9999;
*/
}
?>
Итак, как вы можете видеть, идея проста: запустите скрипт php с помощью 'loop', а тем временем сделайте что-нибудь еще из нижних шагов в [внутреннем] контексте.
Как справиться с этим? Поскольку Asterisk ожидает окончания выполнения script.php , а затем он переходит к следующему шагу.
Спасибо!