2013-07-11 4 views
0

전화가 걸려 올 때 내 PHP 스크립트 루프를 10 번 시도하고 있지만 어떤 이유로 한 번만 실행 한 다음 hangup/dies/exit를 실행합니다. 내가 얻을 수있는 통찰력의 어떤 종류도 크게 감사하겠습니다.별표 agi 루프가 작동하지 않습니다

for ($i=1; $i<=10; $i++) 
ob_implicit_flush(true); 
require_once('phpagi.php'); 

$agi = new AGI(); 
$agi->answer(); 


    list ($id,$number,$callerid) = mysql_fetch_row(mysql_query("select `called`,`tollfree`,`callerid` from `avotfmaster`.`cdr` where `pbx`='0' order by `mins` desc, rand() limit 1",$xb)); 

if($id) { 

$agi->set_callerid("$callerid"); 
$agi->exec('DIAL',"SIP/31282200*[email protected],40,L(60000)"); 


$gwopt_dtmf = $agi->get_data('confirm', 3000, 1); 

if($gwopt_dtmf['result']==1) 
     { 
mysql_query("UPDATE `avotfmaster`.`cdr` SET `pbx`='1' WHERE `number`='$number'",$xb); 


     } else { 
     mysql_query("UPDATE `avotfmaster`.`cdr` SET `pbx`='2' WHERE `number`='$number'",$xb); 
$agi->verbose("I will go ahead and mark this number already scanned and tested"); 

} 

} 
} 
+0

내가 눈치 그 루프가 잘 작동보다 ... 아무것도 분은 이상 내 루프를 죽이면 내가, 다이얼 명령의 대화 시간을 줄이십시오. – thevoipman

답변

0

다이얼에 대한 설명서를 읽으십시오.

해당 기능을 제어해야하는 경우 옵션에 "g"키를 추가해야합니다.

+0

나는 타임 아웃 후에 : g를 추가했지만 $ agi-> exec ('DIAL', "SIP/31282200 * $ number @ sip.abc.com, 40, L (60000), g") 루프를 반복하지 않는다. ; – thevoipman

+0

문서를 읽는 것이 좋지 않기 때문입니다. 동일한 매개 변수에 g를 추가해야합니다 (예 : L 이전). 쉼표를 더 추가 할 필요가 없습니다. – arheops

+0

나는 루프를하고있어, 별표를 내 Agi 스크립트의 다음에 따르지 않으려 고한다. ... – thevoipman

1

Dial과 같은 것을 호출하는 것은 좋지 않습니다. 기본적으로 PHPAGI 스크립트에서 결정되지 않은 (또는 가능할 수도있는) 시간 동안 스크립트를 묶는 것이 좋습니다.

스크립트가 끝날 때까지 시스템 리소스가 해제되지 않습니다. 이런 이유로 PHP에서 최대 스크립트 실행 기간 명령이 있습니다. 스크립트가 기본 허용 시간 (대부분의 호출에서)보다 오래 실행되고 스크립트가 종료 될 것입니다.

는 단서를이 답변을 참조하십시오 : PHP set_time_limit() does not work, safemode is off

+0

이것은 매우 좋은 지적이다. "내 PHP 스크립트 실행 시간이 더 길어 지도록"노력할 것이다 ... – thevoipman

+0

성능이 전혀 문제가되지 않는다면 (필자의 스크립트가 무엇인지 잘 모르겠다) 스크립트를 사용하여 필요한 숫자 등을 가져 와서 다이얼 플랜에 다시 변수로 전달하고 거기에서 전화 걸기를하고 응답을 수집 한 다음 처리 할 스크립트 (또는 다른 스크립트)로 전달하십시오. 변수를 활용하고 카운터를 앞뒤로 반복하여 반복을 추적 할 수 있습니다. 명시된 바와 같이 : 성능에 문제가 있는지 여부를 모르겠다면 걱정할 필요가 없습니다 .-) –

+0

언급 한 것을 잊었습니다 : 위에서 설명한대로 수행하면 time_limit가되지 않습니다. 더 이상 문제가되지 않습니다. –