web-dev-qa-db-fra.com

php :: combien de temps les fichiers tmp restent-ils?

Je travaille sur un script de téléchargement.

Si un utilisateur télécharge un fichier et qu'il existe déjà, je veux avertir l'utilisateur (tout cela via ajax) et lui donner la possibilité de le remplacer ou d'annuler.

Au lieu de déplacer le fichier, j'étais curieux de savoir si je pouvais simplement laisser le fichier dans tmp et retransmettre le chemin d'accès à ce fichier dans la réponse ajax.

Si l'utilisateur dit d'écraser l'ancien fichier dans cette demande ajax, passez le chemin vers php qui continue de travailler sur le fichier.

Pour que cela fonctionne, j'ai besoin de savoir combien de temps un fichier reste dans le répertoire tmp de php

49
Hailwood

Les fichiers téléchargés via POST sont supprimés juste après la fin de l'exécution du script php.

Selon php.net : "Le fichier sera supprimé du répertoire temporaire à la fin de la demande s'il n'a pas été déplacé ou renommé."

63
zerkms

Pour les fichiers téléchargés, le manuel indique :

Le fichier sera supprimé du répertoire temporaire à la fin de la demande s'il n'a pas été déplacé ou renommé.

Les fichiers à conserver doivent donc être déplacés vers un autre emplacement.

Plus généralement, comme le titre de votre question pourrait l'indiquer, les dossiers temporaires doivent être nettoyés par le système. Cela est vrai lors de l'utilisation de fonctions telles que tempnam ou tmpfile , ou simplement lors de l'écriture dans le répertoire temporaire (voir sys_get_temp_dir ).

Dans Ubuntu, cela se fait à chaque redémarrage du système, ou à un intervalle de temps, comme défini dans /etc/default/rcS.

Dans certaines distributions basées sur Red Hat, cela se fait à l'aide de l'utilitaire tmpwatch à partir d'un cronjob. Dans d'autres, le /tmp la partition est montée à l'aide du système de fichiers tmpfs, qui est similaire à un disque RAM (donc nettoyé lorsque l'ordinateur s'arrête).

Un autre mécanisme connu est un seuil de taille, ce qui signifie que le répertoire temporaire sera nettoyé des anciens fichiers lorsqu'il atteindra une certaine taille.

20
netcoder