всё делается через базу. заводите отдельную таблицу заданий, например, заданий удаления файлов с диска. и делаете так
1. вам нужно сохранить файл blabla.jpg
1a. заносите в таблицу заданий "удалить blabla.jpg с таймаутом например 1 час"
1b. создаёте файл blabla.jpg
2. открываете транзацкию
3. делаете запись в основную таблицу, где в одном из полей сохраняете ассоциированный файл blabla.jpg (не сам файл, конечно, а его название)
4. удаляете запись сделанную п. 1а
5а. если нет ошибок - закрываете транзакцию
5б. если есть ошибки - откатываете транзакцию
вторая часть схемы - скрипт, обходящий таблицу заданий и выполняющий задания из неё.