So do you need to know more about mod_perl? The answer is,
"Yes and no."
Just as with Perl, effective scripts can be written even with very
little mod_perl knowledge. With the basic unoptimized setup presented
in this chapter, visitor counters and guestbooks and any other CGI
scripts you use will run much faster and amaze your friends and
colleagues, usually without your changing a single line of code.
However, although a 50 times improvement in guestbook response times
is great, a very heavy service with thousands of concurrent users
will suffer under a delay of even a few milliseconds. You might lose
a customer, or even many of them.
When testing a single script with the developer as the only user,
squeezing yet another millisecond from the response time seems
unimportant. But it becomes a real issue when these milliseconds add
up at the production site, with hundreds or thousands of users
concurrently generating requests to various scripts on the site.
Users are not merciful nowadays. If there is another site that
provides the same kind of service significantly faster, chances are
that users will switch to the competing site.
Debugging is something that some developers prefer not to think
about, because the process can be very tedious. Learning how to make
the debugging process simpler and more efficient is essential for web
programmers. This task can be difficult enough when debugging CGI
scripts, but it can be even more complicated with mod_perl. Chapter 21 explains how to approach debugging in the
mod_perl has many features unavailable under mod_cgi for working with
databases. Some of the most important are persistent database
connections. Persistent database connections require a slightly
different approach, explained in Chapter 20.
Most web services, especially those aimed at an international
audience, must run nonstop, 24 × 7. But at the same time,
new scripts may need to be added and old ones removed, and the server
software will need upgrades and security fixes. And if the server
goes down, fast recovery is essential. These issues are considered in
Finally, the most important aspect of mod_perl is the mod_perl API,
which allows intervention at any or every stage of request
processing. This provides incredible flexibility, allowing the
creation of scripts and processes that would simply be impossible
There are many more things to learn about mod_perl and web
programming in general. The rest of this book will attempt to provide
as much information as possible about these and other related