in reply to MySQL server has gone away

Take a lesson from slashdot's database connection routine. Basically, you have a connect() function that will check if you are still connected. If yes, then all is well and return, but if connection has gone away, we try to reconnect again.

Then have a wrapper for DBI's execute() function that will call connect() everytime before a real execute goes to your database. This may suffer a small preformance penality, but you need this in your production servers.

The slashcode function in question is called sqlConnect in file Slash/DB/Utility/Utility.pm

To re-establish a connection, slashcode actually calls the connect function recursively, which is interesting. Hopefully they know that the function won't be called over and over again.