Я работаю над сценарием загрузки.
Если пользователь загружает файл, и он уже существует, я хочу предупредить пользователя (все это через ajax) и дать им возможность заменить его или отменить.
Вместо перемещения файла мне было любопытно, могу ли я просто оставить файл в tmp и передать путь к этому файлу в ответе ajax.
Если они говорят, что перезаписывают старый файл в том, что запрос ajax передает путь обратно к php, который продолжает работать над файлом.
Для этого, чтобы работать, однако, мне нужно знать, как долго файл остается в php tmp dir
Файлы, загруженные через POST, удаляются сразу после завершения скрипта php.
Согласно php.net : «Файл будет удален из временного каталога в конце запроса, если он не был удален или переименован».
Для загруженных файлов в руководстве указано :
Файл будет удален из временного каталога в конце запроса, если он не был удален или переименован.
Поэтому файлы, которые необходимо сохранить, должны быть перемещены в другое место.
В более общем плане, поскольку заголовок вопроса может означать, что временные папки остаются очищенными системой. Это верно при использовании таких функций, как tempnam или tmpfile , или просто при записи во временный каталог (см. Sys_get_temp_dir ).
В Ubuntu это делается при каждой перезагрузке системы или в промежутке времени, как определено в /etc/default/rcS
.
В некоторых дистрибутивах на основе Red Hat это делается с tmpwatch
утилиты 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/