You probably don't want to do it with events or as a cron job. As
it sounds from your description the amount of gold is a function of
time, perhaps time since they started playing or joined the game.
Thus, instead of updating every 30 minutes, when you are selecting
the current amount of gold, just select it as a function of the time
since they were online or signed up for the game.
You can use a time difference function, either "TIMEDIFF" or subtract
the UNIX_TIMESTAMP value of the start date/time from the
UNIX_TIMESTAMP() function of the curent date/time, and then just
divide appropriately.
More info about MySQL date/time functions: http://dev.mysql.com/doc/
refman/5.0/en/date-and-time-functions.html
Example: To get the number of 30-minute increments since some date,
mysql> SELECT ROUND((UNIX_TIMESTAMP()-UNIX_TIMESTAMP('2006-05-30
3:45'))/(60*30));
+---------------------------------------------------------------------+
| ROUND((UNIX_TIMESTAMP()-UNIX_TIMESTAMP('2006-05-30 3:45'))/(60*30)) |
+---------------------------------------------------------------------+
| 162 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
Here is a reference to the MySQL documentation on date and time
functions, which is really good: http://dev.mysql.com/doc/refman/5.0/
en/date-and-time-functions.html
Good luck!
Douglas Sims
[EMAIL PROTECTED]
On Jun 2, 2006, at 7:56 AM, Miles Thompson wrote:
Dan,
Did not know about events in MySQL. That's a terrific feature.
Miles
At 09:44 AM 6/2/2006, Dan Buettner wrote:
Alex, as Miles noted, this could easily be accomplished with an
external cron event. Doesn't have to be written in an external
language like PHP or perl, even - could be a self-contained
crontab entry a la:
0,30 * * * * /path/to/mysql -u user -psecret database_name -e
"update table_name set gold = gold + 1" > /dev/null
To accomplish this within MySQL, one option might be 5.1's events:
http://dev.mysql.com/doc/refman/5.1/en/events.html
http://dev.mysql.com/doc/refman/5.1/en/create-event.html
Hope this helps,
Dan
Alex Major wrote:
Hi there. I've posted this up on both this list, and the php list
as I'm not sure
whether this is something that I'd need to do with the php or mysql.
Basically, I am making an add-on to my small website which is a
mini online
game. Every user will have gold, and every 30mins I'd like their
amount of
gold to go up by 1 (or say a variable say $goldupdateamount).
I'd like to know which would be the best way of doing this, and
if there is
a command in mysql which would achieve this.
Regards, Alex.
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?
[EMAIL PROTECTED]
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.1.394 / Virus Database: 268.8.1/354 - Release Date:
6/1/2006
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]