fileatime()
La fonction fileatime() est une fonction PHP intégrée qui retourne la dernière date d'accès d'un fichier sous forme d'horodatage Unix.
Ce que fait la fonction fileatime()
La fonction fileatime() est une fonction PHP intégrée qui retourne la dernière date d'accès d'un fichier — le moment où son contenu a été lu pour la dernière fois. La valeur est retournée sous forme d'entier horodatage Unix (le nombre de secondes depuis le 1er janvier 1970, UTC), que vous formatez généralement avec date() avant de l'afficher à un utilisateur.
Cette page couvre la syntaxe, la valeur de retour, un exemple exécutable, la différence entre la date d'accès et les dates de modification et de changement associées, ainsi que le piège du cache qui surprend la plupart des développeurs.
Syntaxe
fileatime(string $filename): int|false$filename— le chemin vers le fichier à inspecter. Il peut être relatif (résolu par rapport au répertoire de travail du script) ou absolu.- Valeur de retour — un entier horodatage Unix en cas de succès, ou
falseen cas d'échec (par exemple, le fichier n'existe pas ou vous n'avez pas la permission de l'appeler avecstat). Commefalseest une valeur PHP valide, comparez toujours avec!== falseplutôt qu'une vérification de vérité souple.
Attention aux temps d'accès sous Linux. Sur les systèmes Linux modernes, les options de montage telles que noatime ou relatime empêchent délibérément la mise à jour de la date d'accès à chaque lecture, afin d'économiser les écritures disque. Si fileatime() ne change pas après la lecture d'un fichier, c'est la configuration du système de fichiers qui est en cause — pas un bug dans votre code.
Comment utiliser fileatime()
- Appelez
fileatime()en passant le chemin du fichier à vérifier. - Vérifiez le résultat par rapport à
falseavant de l'utiliser, pour qu'un fichier manquant ne génère pas d'avertissement lorsque vous le passez àdate(). - Formatez l'horodatage avec
date()pour le transformer en chaîne lisible par l'homme.
<?php
// Create a small file so the example is self-contained and runnable.
$filename = 'example.txt';
file_put_contents($filename, "Hello, fileatime!\n");
// Read it back to register an access.
$contents = file_get_contents($filename);
$lastAccess = fileatime($filename);
if ($lastAccess !== false) {
$when = date('Y-m-d H:i:s', $lastAccess);
echo "The file {$filename} was last accessed on {$when}.\n";
} else {
echo "Could not read the access time for {$filename}.\n";
}
unlink($filename); // tidy upCe script crée example.txt, le lit, puis interroge fileatime() pour savoir quand il a été accédé pour la dernière fois. La protection !== false signifie qu'un fichier manquant ou illisible est géré proprement au lieu d'émettre un avertissement. La sortie ressemble à :
The file example.txt was last accessed on 2026-06-21 10:42:07.fileatime() vs. filemtime() vs. filectime()
PHP expose trois horodatages étroitement liés. Choisir le bon est important :
| Fonction | Retourne | Mis à jour quand… |
|---|---|---|
fileatime() | Dernière date d'accès | Le contenu du fichier est lu |
filemtime() | Dernière date de modification | Le contenu du fichier est écrit/modifié |
filectime() | Dernière date de changement d'inode (changement de statut) | Le contenu ou les métadonnées (permissions, propriétaire, renommage) changent |
Si vous voulez savoir « quand quelqu'un a ouvert ce fichier pour la dernière fois », utilisez fileatime(). Si vous voulez savoir « quand les données ont changé pour la dernière fois » (cas courant pour l'invalidation du cache), utilisez filemtime().
Le piège du cache
PHP met en cache le résultat des fonctions de statut de fichier comme fileatime(), filemtime() et stat() pour la durée d'une requête. Si vous lisez à nouveau un fichier et vérifiez sa date d'accès dans la même exécution de script, vous pouvez obtenir une valeur obsolète. Effacez le cache avec clearstatcache() avant de relire :
<?php
$filename = 'example.txt';
file_put_contents($filename, "data\n");
$first = fileatime($filename);
clearstatcache(); // force a fresh stat() next time
$contents = file_get_contents($filename);
clearstatcache();
$second = fileatime($filename);
echo ($second >= $first)
? "Access time is fresh.\n"
: "Access time looks stale.\n";
unlink($filename);Quand utiliser cette fonction ?
- Auditer quels fichiers ont été lus récemment (rotation des journaux, nettoyage des fichiers les moins récemment utilisés).
- Détecter les uploads non utilisés ou les fichiers temporaires que vous pouvez supprimer en toute sécurité.
- Diagnostiquer si un processus accède réellement à un fichier que vous attendez qu'il lise.
Pour une logique basée sur la modification (reconstruction d'un cache quand les données source changent), utilisez plutôt filemtime(). Pour vérifier qu'un fichier existe avant d'appeler l'une de ces fonctions, combinez-les avec file_exists(). Pour l'ensemble complet des métadonnées en un seul appel, consultez stat().
Résumé
fileatime() retourne l'horodatage Unix du dernier accès d'un fichier, ou false en cas d'échec. Protégez toujours le résultat avec !== false, formatez-le avec date(), et gardez à l'esprit deux pièges : les montages Linux peuvent supprimer les mises à jour des dates d'accès, et PHP met en cache les résultats de stat dans une requête à moins que vous n'appeliez clearstatcache().