PHP unlink file Вернуть состояние
Товарищи вот при работе с базой данных есть транзакция beginTransaction.
Можно либо откатить изменения, если что-то пошло не так rollback
или можно фиксировать новое состояние базы данных commit.
Так вот, есть ли что-то похожее при удалении файла с сервера при помощи php?
Типо сделал unlink('/url/file');
Дальше идет остальной код и где-то что-то пошло не так, и надо вернуть эти файлы, типо отмена удаления. Есть что-то такое? Удаляю через foreach несколько файлов.
Ответы (1 шт):
Автор решения: Eugene X
→ Ссылка
unlink по сути удаляет файл сразу и навсегда, но можно передвинуть файл и проработать полезную нагрузку.
$file = "MyFile.txt";
$last_abort_state = false;
try {
$tmp = tempnam(); # Временное имя для файла, в папке tmp если не указанно иначе
$last_abort_state = ignore_user_abort(true); # Не останавливать скрипт если юзер отвалился.
rename($file, $tmp);
# Полезная нагрузка
unlink($tmp); # commit
} catch (Exception $err) {
rename($tmp, $file); # rollback
}
ignore_user_abort($last_abort_state); # Возвращаем предыдущее состояние abort