我的想法是我想在Asterisk的拨号方案中执行PHP脚本。它就像一个deamon / process,它从Asterisk获取值并对它们做一些事情。但是当我执行系统(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;
*/
}
?>
所以,你可以看到这个想法很简单:用'loop'启动php脚本,同时从[internal]上下文的底部步骤做另外的事情。 怎么处理?因为Asterisk等待 script.php 执行结束,然后他进入下一步。
谢谢!