php:: как долго остаются файлы tmp?

Я работаю над сценарием загрузки.

Если пользователь загружает файл и он уже существует, я хочу, чтобы предупредить пользователя (это все через AJAX) и дать им возможность заменить его или отменить.

вместо перемещения файла, Мне было любопытно, могу ли я просто оставить файл в tmp и передать путь к этому файлу в ответе ajax.

Если пользователь говорит перезаписать старый файл в этом запросе ajax передать путь обратно на php, который продолжает работать на папка.

для этого, чтобы работать, однако мне нужно знать, как долго файл остается в tmp dir php

3 ответов


файлы, загруженные через 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

установить сессию.gc_maxlifetime - это количество секунд, которое вы хотите, чтобы каждый файл tmp длился до его удаления. Если вы входите в систему администратора в OpenCart, это количество секунд, пока вы автоматически не выйдете из системы. Например, чтобы установить полчаса, вы бы сделали 60 секунд раз 30 минут, которые были бы значением 1800 секунд.

две другие переменные связаны с тем, когда будет запущен сборщик мусора, и важно, чтобы они были установлены на значения выше, если у вас возникли проблемы с этим.

подробнее здесь: https://www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-up/