К сожалению, средствами языка PHP такую штукенцию врят-ли можно сделать без сторонних библиотек (или костылей), но если сильно хочется, есть ReactPHP.
Потому, самый лояльный и распространённый вариант решения данной задачи выглядит так:
- Пишем скрипт который бегает в базу, берет дату и проверяет её
- Берем любой планировщик задач, например cron, говорим ему, мол запускай пожалуйста этот скрипт раз в N часов/месяцев/дней.
В результате скрипт будет запускаться раз в (например, день), выбирать все записи которые были созданы 30 дней назад и будет проставлять им необходимый статус.