I would definitely take a different approach.
It is not possible to set the timestamp when the clip will be played, and during rollover to calculate the decay from this timestamp? When you read statistics, you should accept activity minus decay since the last timestamp.
That way, you still only need one update per click.
To make it specific:
UPDATE `audio_clips` SET `lastview`=UNIX_TIMESTAMP(), `activity`=1+`activity`*POW(0.9,(UNIX_TIMESTAMP()-`lastview`)/3600) WHERE `clipid`=$clipid
For decay of 10% per hour and relief 1 per view.
To view current statistics:
SELECT *,`activity`*POW(0.9,(UNIX_TIMESTAMP()-`lastview`)/3600) AS `current_activity` FROM `audio_clips`
mvds
source share