The thing about comparing servlets and an Apache module such as PHP or mod_perl is a bit of a red herring. You're trying to compare apples and oranges (OK, can I throw another cliche in here ;-))
Servlets are not a server-side scripting environment. They are compiled bytecode meant to run in the Java virtual machine. PHP and mod_perl are scripting languages, which are compiled on-the-fly as they are interpreted inside the Apache server process.
The point of this is, some types of things will perform much better in a servlet environment, while others will perform better in a scripted Apache module.
Servlets are more of a heavyweight thing. They don't usually start up fast, but once they get up to speed, they perform quite well, because they don't have to be "re-loaded" everytime another web page is requested. PHP and mod_perl scripts are loaded every time requested, but they are very lightweight languages, which respond quickly in an environment like this. I say use servlets if you are writing very complicated applications, perhaps involving more than one server, with network socket programming, etc..., but use PHP or mod_perl for general web-based applications and dynamic websites.
Or, in the case of PHP, use PHP's Java connectivity: write the back-end stuff in servlets, and the front-end stuff in PHP, connecting to the servlets for the data management and decision making.
-------------------------------------------
"Calculus is just the meaningless manipulation of higher symbols"
-unknown F student