Крон в этом случае плохое решение. По факту вам надо оперировать только таймерами. Начисление денег за время что не были в игре делается легко. Просто берете разницу между последним начислением и текущем временем и даете денег юзеру сохраняя время начисления. Увеличение атаки можно сделать следующим образом. Например у нас есть таблица с эффектами которые цепляются на юзера. Основная задача этой таблицы - хранить таймпштамп когда этот эффект будет не активен. При активации эффекта мы его добавляем в эту таблицу, а дальше каждый раз когда считаем урон просто проверяем не истекло ли еще время действия эффекта. Проверка будет происходить каждый запрос. Это будет сильно дешевле чем раз в секунду пинать крон, да и более правильно как по мне.