php:: как долго хранятся tmp файлы?
Я работаю над сценарием загрузки.
Если пользователь загружает файл, и он уже существует, я хочу предупредить пользователя (это все через ajax) и дать ему возможность заменить его или отменить.
Вместо того, чтобы перемещать файл, мне было интересно, могу ли я просто оставить файл в tmp и вернуть путь к этому файлу в ответе ajax.
Если пользователь говорит, что перезаписать старый файл в этом запросе ajax, передайте путь обратно к php, который продолжает работать с файлом.
Однако, чтобы это работало, мне нужно знать, как долго файл остается в директории php tmp
3 ответа
Файлы, загруженные через POST, удаляются сразу после завершения работы php-скрипта.
Согласно php.net: "Файл будет удален из временного каталога в конце запроса, если он не был удален или переименован".
Для загруженных файлов в руководстве указано:
Файл будет удален из временного каталога в конце запроса, если он не был удален или переименован.
Файлы, которые необходимо сохранить, должны быть перемещены в другое место.
В более общем смысле, как может означать заголовок вашего вопроса, временные папки оставляются для очистки системой. Это верно при использовании таких функций, как tempnam или tmpfile, или просто при записи во временный каталог (см. http://php.net/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/