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
→ Ссылка