Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Asterisk и AGI

Asterisk и AGI

После исполнения скрипта * занимает 99% процессорного времени
Откуда: Москва
Сообщений: 8

Asterisk и AGI

После исполнения скрипта * занимает 99% процессорного времени... как быть? причем скрипт даже может быть простой say digits... Может есть какое решение?
2008-10-03 11:51

Откуда: Kiev
Сообщений: 801

Re: Asterisk и AGI

На чем скрипт? Покажите тело скрипта.... Вообщем, больше входящих данных...
Лучший способ предвидеть будущее - изобрести его (Алан Кей, "Apple")
2008-10-03 13:14

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: Asterisk и AGI

Asterisk под Linux или FreeBSD?
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2008-10-03 18:43

Откуда: Москва
Сообщений: 8

Re: Asterisk и AGI

Под Linux FC5, скрипт такой:

# cat test.php
#!/usr/bin/php -q
<?php
ob_implicit_flush(true);
set_time_limit(6);
$in = fopen("php://stdin","r");
$stdlog = fopen("/var/log/asterisk/my_agi.log", "w");
$debug=true;
// Do function definitions before we start the main loop
function read() {
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug) fputs($stdlog, "read: $input\n");
return $input;
}

function errlog($line) {
global $err;
echo "VERBOSE \"$line\"\n";
}

function write($line) {
global $debug, $stdlog;
if ($debug) fputs($stdlog, "write: $line\n");
echo $line."\n";
}

// parse agi headers into array
while ($env=read()) {
$s = split(": ",$env);
$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
if ($env == "") {
break;
}
}

write("ANSWER");
read();
write("EXEC Read MYVARTEST|ru/vm-password|7");
read();
write("GET VARIABLE MYVARTEST"); // X is the escape digit. since X is not DTMF, no exit is possible
$vartest = read();
$vartest = str_replace("200 result=1 (","",$vartest);
$vartest = str_replace(")","",$vartest);
errlog("PINCODE: $vartest");
read();

if ($vartest == "4455426"){
write("EXEC Read DIALTO|vm-toenternumber");
read();
write("GET VARIABLE DIALTO");
$vardial = read();
$vardial = str_replace("200 result=1 (","",$vardial);
$vardial = str_replace(")","",$vardial);
errlog("DIAL TO: $vardial");
read();
errlog("PIN IS RIGHT, DIAL");
read();
write("EXEC Dial SIP/$vardial@89.20.132.131");
$result = read();
errlog("Dial status: $result");
read();
} else {
errlog("PIN WRONG, HANGUP");
read();
}

fclose($in);
fclose($stdlog);
pcntl_signal(SIGHUP, SIG_IGN);
exit;
?>
2008-10-06 08:44

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru