W3docs

touch()

En PHP, la fonction touch() permet de définir l'heure de modification et d'accès d'un fichier. Découvrez sa syntaxe, ses paramètres et des exemples.

Introduction

En PHP, la fonction touch() est utilisée pour définir l'heure de modification et d'accès d'un fichier. C'est une fonction utile pour travailler avec des fichiers dans vos scripts PHP. Dans cet article, nous couvrirons tout ce que vous devez savoir sur la fonction touch(), notamment sa syntaxe, ses paramètres et des exemples d'utilisation.

Comprendre la fonction touch()

La fonction touch() met à jour l'heure de modification (mtime) et l'heure d'accès (atime) d'un fichier. Elle accepte trois paramètres :

  • $filename — le chemin vers le fichier.
  • $mtime (optionnel) — l'horodatage de modification sous forme de temps Unix. S'il est omis, l'heure actuelle (time()) est utilisée.
  • $atime (optionnel) — l'horodatage d'accès sous forme de temps Unix. S'il est omis, la valeur passée à $mtime est utilisée (pas nécessairement l'heure actuelle).

Si le fichier spécifié n'existe pas, touch() crée un fichier vide à ce chemin. Cela en fait l'équivalent PHP standard de la commande Unix touch.

Vous utilisez généralement touch() lorsque vous souhaitez :

  • Créer un fichier placeholder vide ou un fichier de verrouillage.
  • « Rafraîchir » le mtime d'un fichier pour que les outils d'invalidation de cache (ou les vérifications de build de type make) le traitent comme récemment modifié.
  • Définir un horodatage connu sur un fichier à des fins de test ou pour des systèmes comparant les heures de modification.

Syntaxe de la fonction touch()

La syntaxe de la fonction touch() est la suivante :

touch(string $filename, ?int $mtime = null, ?int $atime = null): bool

Ici, $filename est le chemin vers le fichier, $mtime est l'horodatage de modification au format Unix, et $atime est l'horodatage d'accès. Les deux horodatages sont optionnels. La fonction retourne true en cas de succès ou false en cas d'échec.

Un horodatage en PHP est simplement le nombre de secondes depuis l'époque Unix (1er janvier 1970). Utilisez time() pour « maintenant », strtotime() pour analyser une chaîne de date, ou une expression arithmétique comme time() - 3600 pour « il y a une heure ».

Exemples d'utilisation de touch()

Voyons un exemple de la façon dont la fonction touch() peut être utilisée en PHP.

Exemple 1 : Mettre à jour l'heure de modification et d'accès d'un fichier

if (touch('example.txt', time())) {
    echo "File timestamps updated successfully.";
} else {
    echo "Failed to update file timestamps. Check permissions or file path.";
}

Cet exemple met à jour l'heure de modification et d'accès du fichier example.txt à l'heure actuelle. L'instruction if vérifie la valeur de retour boolean pour gérer les erreurs potentielles, telles que les fichiers manquants ou les permissions insuffisantes.

Exemple 2 : Définir explicitement les heures de modification et d'accès

$mtime = time() - 3600; // 1 hour ago
$atime = time() - 1800; // 30 minutes ago

if (touch('example.txt', $mtime, $atime)) {
    echo "Both timestamps updated successfully.";
} else {
    echo "Failed to update timestamps.";
}

Cet exemple montre comment passer à la fois les paramètres $mtime et $atime pour définir des valeurs différentes pour les heures de modification et d'accès.

Exemple 3 : Créer un fichier placeholder

Parce que touch() crée le fichier lorsqu'il est absent, c'est un moyen concis de créer un fichier vide sans ouvrir un flux :

$path = 'cache/.gitkeep';

if (!file_exists($path)) {
    touch($path);
    echo "Placeholder created.";
} else {
    echo "Placeholder already exists.";
}

Après avoir appelé touch(), vous pouvez relire la nouvelle heure de modification avec filemtime() pour confirmer le changement :

$timestamp = mktime(0, 0, 0, 1, 1, 2030); // Jan 1, 2030 (in the default timezone)
touch('example.txt', $timestamp);
echo filemtime('example.txt') === $timestamp ? 'mtime set' : 'mismatch';

Remarque : Assurez-vous que le processus PHP dispose des permissions d'écriture pour le répertoire cible. Si le fichier n'existe pas, touch() le créera avec les permissions par défaut (soumises à l'umask du système). Définir un mtime dans le futur est autorisé et est parfois utilisé pour forcer des reconstructions de cache.

Conclusion

La fonction touch() offre un moyen simple de gérer les horodatages de fichiers en PHP. Que vous ayez besoin de mettre à jour les heures d'accès pour les systèmes de mise en cache, de suivre l'activité des fichiers ou de créer des fichiers placeholder, cette fonction s'intègre parfaitement dans vos workflows de gestion de fichiers. Nous espérons que ce guide a clarifié comment utiliser touch() efficacement dans vos projets.

Fonctions associées

  • filemtime() — lire l'heure de dernière modification d'un fichier.
  • file_exists() — vérifier si un fichier ou un répertoire existe avant de l'utiliser avec touch.
  • fopen() — ouvrir ou créer un fichier lorsque vous avez également besoin d'écrire du contenu.
  • unlink() — supprimer un fichier.
  • date() — formater les horodatages Unix avec lesquels touch() travaille.

Pratique

Pratique
Que fait la fonction 'touch' en PHP ?
Que fait la fonction 'touch' en PHP ?
Was this page helpful?