I found this on a different forum and I thought this might work, but could someone elaborate more on this?
I see these people coding 'turn based games' all the time, no idea how they work, but if a turn is every 30 minutes why not just look at the value returned by time(), then subtract the timestamp of when the first turn took place and then divide by the amount of seconds in a half hour, then floor() it, make this a function and call it to see what turn it's on. This way you only store the timestamp of each users first turn in the DB, no cron jobs, and mySql can focus on more important things, you also don't have to worry about users not getting their 'turns' incremented right away (if your update script takes 5 minutes to run the last users will experience delayed update times)
I guess if your database isn't that large your way isn't an issue, but if your site gets too big you will need a more efficient way.
:-)