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().