Я работаю над сценарием загрузки.
Если пользователь загружает файл, и он уже существует, я хочу предупредить пользователя (это все через ajax) и дать ему возможность заменить его или отменить.
Вместо того, чтобы перемещать файл,
Мне было любопытно, если бы я мог просто оставить файл в tmp и вернуть путь к этому файлу в ответе ajax.
Если они говорят, что пользователь перезаписывает старый файл в этом запросе ajax, передайте путь обратно к php, который продолжает работать с файлом.
Однако, чтобы это работало, мне нужно знать, как долго файл остается в директории php tmp
Файлы, загруженные через POST, удаляются сразу после завершения работы php-скрипта.
В соответствии с php.net:
«Файл будет удален из временного каталога в конце запроса, если он не был перемещен или переименован».
Для загруженных файлов, в руководстве говорится:
Файл будет удален из
временный каталог в конце
запрос, если он не был удален
или переименован.
Файлы, которые необходимо сохранить, должны быть перемещены в другое место.
В более общем смысле, как может указывать заголовок вашего вопроса, временные папки оставляются для очистки системой. Это верно при использовании таких функций, как TempNam или же tmpfile, или просто при записи во временный каталог (см. sys_get_temp_dir).
В Ubuntu это делается при каждой перезагрузке системы или во временном интервале, как определено в /etc/default/rcS
,
В некоторых дистрибутивах на базе Red Hat это делается с помощью tmpwatch
Утилита от cronjob. В других /tmp
раздел монтируется с помощью tmpfs
файловая система, которая похожа на RAM-диск (поэтому очищается, когда компьютер выключается).
Другой известный механизм — это порог размера, который означает, что временный каталог будет очищен от более старых файлов, когда он достигнет определенного размера.
В PHP нужно установить три переменные, чтобы убедиться, что сборка мусора в каталоге / tmp происходит правильно, и они:
session.gc_maxlifetime = 21600
session.gc_probability = 1
session.gc_divisor = 100
Задайте для session.gc_maxlifetime количество секунд, в течение которых каждый файл tmp будет длиться до его удаления. Если вы войдете в систему с правами администратора в OpenCart, это количество секунд, пока вы автоматически не выйдете из системы. Например, чтобы установить полчаса, вы должны сделать 60 секунд на 30 минут, что будет равно 1800 секундам.
Две другие переменные связаны с тем, когда будет запущен сборщик мусора, и важно, чтобы они были установлены на значения выше, если у вас есть проблемы с этим.
Больше информации здесь:
https://www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-up/