W3docs

touch()

Функция touch() в PHP устанавливает время изменения и доступа к файлу. Узнайте синтаксис, параметры и примеры использования.

Введение

В PHP функция touch() используется для установки времени изменения и доступа к файлу. Это полезная функция для работы с файлами в PHP-скриптах. В этой статье мы рассмотрим всё, что нужно знать о функции touch(): её синтаксис, параметры и примеры использования.

Понимание функции touch()

Функция touch() обновляет время изменения (mtime) и время доступа (atime) файла. Она принимает три параметра:

  • $filename — путь к файлу.
  • $mtime (необязательный) — временная метка изменения в формате Unix. Если не указана, используется текущее время (time()).
  • $atime (необязательный) — временная метка доступа в формате Unix. Если не указана, используется значение, переданное в $mtime (не обязательно текущее время).

Если указанный файл не существует, touch() создаёт пустой файл по этому пути. Это делает её стандартным PHP-эквивалентом Unix-команды touch.

Функция touch() обычно применяется, когда нужно:

  • Создать пустой файл-заглушку или файл блокировки.
  • «Обновить» mtime файла, чтобы инструменты инвалидации кэша (или системы сборки в стиле make) считали его только что изменённым.
  • Установить известную временную метку на файл для тестирования или для систем, сравнивающих времена изменения.

Синтаксис функции touch()

Синтаксис функции touch() выглядит следующим образом:

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

Здесь $filename — путь к файлу, $mtime — временная метка изменения в формате Unix, а $atime — временная метка доступа. Оба параметра временных меток необязательны. Функция возвращает true в случае успеха или false в случае ошибки.

Временная метка в PHP — это просто количество секунд, прошедших с начала эпохи Unix (1 января 1970 г.). Используйте time() для «сейчас», strtotime() для разбора строки даты или арифметику, например time() - 3600, для «час назад».

Примеры использования touch()

Рассмотрим примеры того, как функция touch() может использоваться в PHP.

Пример 1: Обновление времени изменения и доступа файла

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

Этот пример обновляет время изменения и доступа файла example.txt до текущего времени. Оператор if проверяет булево возвращаемое значение для обработки возможных ошибок, таких как отсутствие файла или недостаточные права доступа.

Пример 2: Явная установка времени изменения и доступа

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

Этот пример демонстрирует, как передать оба параметра — $mtime и $atime — для установки разных значений времени изменения и доступа.

Пример 3: Создание файла-заглушки

Поскольку touch() создаёт файл, если он отсутствует, это краткий способ создать пустой файл без открытия потока:

$path = 'cache/.gitkeep';

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

После вызова touch() можно считать новое время изменения с помощью filemtime(), чтобы подтвердить изменение:

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

Примечание: Убедитесь, что PHP-процесс имеет права на запись в целевой каталог. Если файл не существует, touch() создаст его с правами по умолчанию (с учётом системного umask). Установка mtime в будущем допустима и иногда используется для принудительного пересоздания кэша.

Заключение

Функция touch() предоставляет простой способ управления временными метками файлов в PHP. Независимо от того, нужно ли вам обновлять время доступа для систем кэширования, отслеживать активность файлов или создавать файлы-заглушки, эта функция органично вписывается в рабочие процессы работы с файлами. Надеемся, это руководство помогло прояснить, как эффективно использовать touch() в ваших проектах.

Связанные функции

  • filemtime() — получить время последнего изменения файла.
  • file_exists() — проверить, существует ли файл или каталог, перед вызовом touch.
  • fopen() — открыть или создать файл, когда нужно также записать содержимое.
  • unlink() — удалить файл.
  • date() — форматировать Unix-временные метки, с которыми работает touch().

Практика

Практика
Что делает функция 'touch' в PHP?
Что делает функция 'touch' в PHP?
Was this page helpful?