W3docs

touch()

En PHP, la función touch() se usa para establecer la hora de modificación y acceso de un archivo. Es útil para trabajar con archivos en tus scripts PHP.

Introducción

En PHP, la función touch() se utiliza para establecer la hora de modificación y acceso de un archivo. Es una función útil para trabajar con archivos en tus scripts PHP. En este artículo, cubriremos todo lo que necesitas saber sobre la función touch(), incluyendo su sintaxis, parámetros y ejemplos de cómo puede utilizarse.

Entendiendo la Función touch()

La función touch() actualiza el tiempo de modificación (mtime) y el tiempo de acceso (atime) de un archivo. Acepta tres parámetros:

  • $filename — la ruta al archivo.
  • $mtime (opcional) — la marca de tiempo de modificación como tiempo Unix. Si se omite, se usa la hora actual (time()).
  • $atime (opcional) — la marca de tiempo de acceso como tiempo Unix. Si se omite, se utiliza el valor pasado a $mtime (no necesariamente la hora actual).

Si el archivo especificado no existe, touch() crea un archivo vacío en esa ruta. Esto lo convierte en el equivalente estándar de PHP al comando touch de Unix.

Generalmente utilizas touch() cuando deseas:

  • Crear un archivo de marcador vacío o un archivo de bloqueo.
  • "Actualizar" el mtime de un archivo para que las herramientas de invalidación de caché (o las verificaciones de compilación al estilo make) lo traten como recién modificado.
  • Establecer una marca de tiempo conocida en un archivo para pruebas o para sistemas que comparan tiempos de modificación.

Sintaxis de la Función touch()

La sintaxis de la función touch() es la siguiente:

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

Aquí, $filename es la ruta al archivo, $mtime es la marca de tiempo de modificación en formato Unix, y $atime es la marca de tiempo de acceso. Ambas marcas de tiempo son opcionales. La función devuelve true en caso de éxito o false en caso de fallo.

Una marca de tiempo en PHP es simplemente el número de segundos desde la época Unix (1 de enero de 1970). Usa time() para "ahora", strtotime() para analizar una cadena de fecha, o aritmética como time() - 3600 para "hace una hora".

Ejemplos de Uso de touch()

Veamos un ejemplo de cómo se puede usar la función touch() en PHP.

Ejemplo 1: Actualizar la Hora de Modificación y Acceso de un Archivo

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

Este ejemplo actualiza la hora de modificación y acceso del archivo example.txt a la hora actual. La sentencia if comprueba el valor de retorno booleano para manejar posibles errores, como archivos inexistentes o permisos insuficientes.

Ejemplo 2: Establecer Explícitamente los Tiempos de Modificación y Acceso

$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.";
}

Este ejemplo demuestra cómo pasar los parámetros $mtime y $atime para establecer valores diferentes para los tiempos de modificación y acceso.

Ejemplo 3: Crear un Archivo de Marcador

Como touch() crea el archivo cuando no existe, es una forma concisa de crear un archivo vacío sin abrir un flujo:

$path = 'cache/.gitkeep';

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

Después de llamar a touch(), puedes leer el nuevo tiempo de modificación con filemtime() para confirmar el cambio:

$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';

Nota: Asegúrate de que el proceso PHP tenga permisos de escritura para el directorio de destino. Si el archivo no existe, touch() lo creará con permisos predeterminados (sujeto al umask del sistema). Establecer un mtime en el futuro está permitido y a veces se usa para forzar la reconstrucción de la caché.

Conclusión

La función touch() proporciona una manera sencilla de gestionar las marcas de tiempo de archivos en PHP. Ya sea que necesites actualizar los tiempos de acceso para sistemas de caché, rastrear la actividad de archivos o crear archivos de marcador, esta función se integra perfectamente en tus flujos de trabajo de manejo de archivos. Esperamos que esta guía haya aclarado cómo usar touch() de manera efectiva en tus proyectos.

Funciones Relacionadas

  • filemtime() — lee la última hora de modificación de un archivo.
  • file_exists() — comprueba si un archivo o directorio existe antes de aplicarle touch.
  • fopen() — abre o crea un archivo cuando también necesitas escribir contenido.
  • unlink() — elimina un archivo.
  • date() — formatea las marcas de tiempo Unix con las que trabaja touch().

Práctica

Práctica
¿Qué hace la función 'touch' en PHP?
¿Qué hace la función 'touch' en PHP?
Was this page helpful?