Chapter 13. mod_perl
In Chapter 12, you learned about programming a Perl CGI application. As was stated, CGI is a standard for web servers to be able to execute external programs. It provides both input data to the program, and receives data back from the program. In the case of the contact application in Chapter 12, the Perl interpreter
perl, running the Perl code in
app.pl was the external program. This requires that in addition to each Apache child or thread, for whatever number of requests call this program, an equal number of external processes also are executed. Secondly, and key to this discussion, the state of the program execution — the interpreted Perl code, database connections, are all created and then destroyed for each CGI URL request and have to be re-created every time the program runs again.
This is where mod_perl steps in. mod_perl is an Apache module that loads a persistent Perl interpreter into each Apache process. This allows Perl applications to be parsed and compiled by this persistent Perl interpreter once so that each request to the application will receive the benefit of precompiled code.
Having a persistent Perl interpreter loaded into the Apache server is certainly a big benefit to using mod_perl. Most importantly, and the primary advantage of using mod_perl, is that mod_perl provides you complete access to the Apache API. This lets you write mod_perl handlers, and — just as can be done with regular Apache modules — this allows you to implement them in ...