Here's another idea...
rather than updating every hour or so... add a datetime field which you set everytime you write the information to the database.
Then, instead of automatically doing everyone every hour, you can wait until you make a read of the row, if the timestamp is greater than some threshold, then you run the formula based on the amount of time which has passed since the timestamp.
The only downside to this method is if you want to do something like calculate the total wealth or food supply for economic purposes.
Otherwise... on the linux side look into cron, and in the windows side, look into AT or the windows scheduler... all those options will allow you to schedule a PHP script to run using the command line interpretter at any times you like... using this method I would still suggest using the timestamp approach in case you miss an execution due to a power outage or an otherwise down system.