My 2 cents. Based on daily traffic:
1 - 1000 unique sessions shared hosting, => CGI Perl (CGI.pm) => Php 1000 - 5000 unique sessions (fun sites) shared hosting (modperl is not available) => CGI Perl + mod_rewrite (to cache dynamic contents) => Php daily traffic: 5,000 - 20,000 unique sessions (small sites) single server => CGI + an efficient caching system, such as a customized C module => Php => modperl daily traffic: 20,000 - 100,000 unique sessions (medium sites) => Php + an efficient caching system => modperl, but not based on Mason or such "application toolkits" daily traffic: 100,000 - 500,000 unique sessions (medium to medium-large sites) => modperl in a cluster environment Php has two advatages over modperl: first, it is available everywhere, especially in a shared hosting plan; second, it runs with less system resources. Modperl's advantage is its direct access to the Apache API. Unfortunately, among modperl users, most are still programing on top of "toolkits", never have explored the richness and power of the API. PV