我有一个 Asterisk 服务器在支付环境中工作得很好。现在,我需要将业务逻辑与 Asterisk 服务器分开以提高效率,并出于显而易见的原因保护 AGI 脚本。
问题是,如何将现有的工作 AGI 脚本转换为 FASTAGI 脚本,或者如何从 FASTAGI 服务器调用现有的 AGI 脚本?
我在这个平台上发布了一些带有答案的帖子,但没有人明确说明如何从头开始执行此操作。很高兴能清楚地了解如何使用 PHP 实现这一目标。
你可以用xinetd
这个。从每个星号框的拨号方案中,使用 fast agi 参数调用 agi,替换为 fastagi 服务器的 IP 地址:
AGI(agi://192.168.1.100/)
确保你有类似的/etc/services
东西:
agi 4573/tcp # FAST AGI entry
在 FastAGI 服务器上:在一个名为/etc/xinetd.d/agi
(确保/etc/xinetd.conf
从 加载模块/etc/xinetd.d/
)的文件中,有一个调用您的 agi 脚本的定义。
# description: agi service for PHP fastagi interaction
service agi
{
socket_type = stream
user = root
group = nobody
server = /path/to/agiLaunch.sh
wait = no
protocol = tcp
bind = 127.0.0.1
disable = no
per_source = UNLIMITED
instances = UNLIMITED
cps = 1000 0
}
在您的 AGI 脚本中,您现在可以像往常一样通过读取 STDIN 或 STDOUT 进行操作。