[asterisk-users] How to reuse mysql connection between AGI's
Steve Edwards
asterisk.org at sedwards.com
Fri Aug 6 17:04:57 CDT 2010
On Thu, 5 Aug 2010, Faheem wrote:
> Hey, Is there any way to share MySQL connection between different agi's.
No.
Each AGI is executed as a separate process. While debugging (not
interacting with a "real" call), you can executed your AGI completely
independent from Asterisk from the command line if you feed it appropriate
cruft via stdin.
> Actually when call comes to asterisk box it executes various agi scripts
> sequentially. Each script checks various values by making a
> new MySQL connection and then execute query and then disconnects.
>
> So, Ideally there should be one connection, and it should be reused
> between each agi and when a call is over it should be disconnected. Is
> there any mechanism to reuse single MySQL connection between agi
> scripts? The agi scripts are written in Perl
I suspect the issue is Perl, not MySQL.
If you are doing something often enough to be a performance issue, why did
you write it in an interpreted script language instead of a compiled
language?
In previous experiments, I demonstrated you can execute XXX AGIs written
in c in the time you can load the interpreter, parse your script, and
execute a single AGI written in Perl or PHP.
In that experiment, the "null-agi" only read the AGI environment and
exited.
I added mysql_init(), mysql_real_connect(), and mysql_close() and...
On my wimpy (by current standards) 500MHz AMD Geode I can execute about 20
"null-agi's" per second. On my almost as wimpy 1.1GHz AMD 8650 I can
execute about 100 per second.
I'd suggest re-implementing your AGIs in c and "merging" a couple of the
AGIs together if it makes sense for your environment.
As an alternative, you could go the fastagi() route. This means changing
your code to execute as a daemon which means you can keep the same MySQL
connection and you eliminate the AGI process creation overhead.
It also introduces complexity in handling simultaneous call execution, you
become dependent on that process being available, and you lose some
flexibility in being able to make changes to your AGIs without affecting
calls in progress.
--
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards sedwards at sedwards.com Voice: +1-760-468-3867 PST
Newline Fax: +1-760-731-3000
More information about the asterisk-users
mailing list