Enklast är det om man man sätter ett kriterium i sql-satsen som hämtar annonserna så att den bara hämtar annonser som publicerats de senaste 30 dagarna, d.v.s. något i stil med följande:
select * from ads
where date_sub(curdate(), interval 30 day) <= ads.created_at
order by ads.created_at desc;
Sedan kan man göra motsvarande fast med en delete-sats i stället för en select-sats, samt med where-kriteriet negerat, och köra det varje natt så raderas alla gamla annonser. Men egentligen är det inget större problem rent utrymmes- och prestandamässigt att ha kvar dem, det är ju inga enorma datamängder det rör sig om direkt...