As someone who just went through this selection process for a large scale production site...
Rails. Rapid development, deployment. Serious effort to scale. Needs a lot of metal. Database heavy applications require a lot of tooling/optimizing, to the point that Rail's features for autogen become defeatist at a certain point.
Django. Rapid development, awesome performance, stuck with the Django way or the highway. Once you get deep into development, the benefit of the rapid development can become a hindrance. See notes above about Rails.
PHP w/ MVC Framework. Rapid development, frameworks not designed for scale, most frameworks designed for a language other than PHP (most seem to think they're being written for Java). Easiest to scale out of the three I've mentioned, not hard to make the framework bend to your needs.
.NET, if you want to pay licensing fees that could sink your business if you don't have the budget.
That said, we chose PHP with PostgreSQL. We rolled our own framework taking design cues from Rails, ASP.NET and Django. Foremost built for scale, ease of development second priority. We run weekly performance comparison with other PHP frameworks, and are able to beat them all by 50% or better; but that's because of a design choice for the framework. We chose performance over ease. I'd much rather spend the upfront effort to sleep well at night once launched. Heavy use of memcache, strict rules regarding use of session, cache at every level (database calls, html fragments, models). Custom templating for views that incorporates reuse and encapulation principles via ASP.NET/JSP style tag libraries/controls.
That said, PHP sucks. Horrible hackish language. But it's easy and sleazy, scales easily. Scaling the database is a separate issue. MySQL possibly better for this, but PostgreSQL is a better RDBMS on many levels. Most frameworks for PHP suck because most of the people designing them aren't disciplined in other languages and make horrible assumptions about best practices.
Rails vs Django vs Cake vs CodeIgniter vs ....
As someone who just went through this selection process for a large scale production site...
Rails. Rapid development, deployment. Serious effort to scale. Needs a lot of metal. Database heavy applications require a lot of tooling/optimizing, to the point that Rail's features for autogen become defeatist at a certain point.
Django. Rapid development, awesome performance, stuck with the Django way or the highway. Once you get deep into development, the benefit of the rapid development can become a hindrance. See notes above about Rails.
PHP w/ MVC Framework. Rapid development, frameworks not designed for scale, most frameworks designed for a language other than PHP (most seem to think they're being written for Java). Easiest to scale out of the three I've mentioned, not hard to make the framework bend to your needs.
.NET, if you want to pay licensing fees that could sink your business if you don't have the budget.
That said, we chose PHP with PostgreSQL. We rolled our own framework taking design cues from Rails, ASP.NET and Django. Foremost built for scale, ease of development second priority. We run weekly performance comparison with other PHP frameworks, and are able to beat them all by 50% or better; but that's because of a design choice for the framework. We chose performance over ease. I'd much rather spend the upfront effort to sleep well at night once launched. Heavy use of memcache, strict rules regarding use of session, cache at every level (database calls, html fragments, models). Custom templating for views that incorporates reuse and encapulation principles via ASP.NET/JSP style tag libraries/controls.
That said, PHP sucks. Horrible hackish language. But it's easy and sleazy, scales easily. Scaling the database is a separate issue. MySQL possibly better for this, but PostgreSQL is a better RDBMS on many levels. Most frameworks for PHP suck because most of the people designing them aren't disciplined in other languages and make horrible assumptions about best practices.
Flame away.