Getlastmod: примеры (PHP)

Использование getlastmod для получения времени изменения скрипта
Раздел: Информация о PHP
getlastmod: int|false

Функция getlastmod

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

Когда используется

Использование функции актуально для статических страниц, сгенерированных PHP, или для страниц, содержимое которых редко меняется. Она позволяет автоматически выводить дату обновления сайта без ручного редактирования. Также функция может служить частью механизма инвалидации кеша.

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

Базовый пример

Получение временной метки последнего изменения скрипта.

echo getlastmod();
1726147200
Пример с форматированием даты

Преобразование временной метки в читаемый формат.

$lastMod = getlastmod();
if ($lastMod) {
    echo date('d.m.Y H:i:s', $lastMod);
} else {
    echo 'Информация недоступна';
}
12.09.2024 14:30:00

Похожие функции в PHP

Для получения времени модификации файлов в PHP существуют другие функции.

filemtime()

Функция filemtime(string $filename) возвращает время последнего изменения указанного файла. В отличие от getlastmod(), она работает с любым файлом, а не только с исполняемым скриптом. Предпочтительнее использовать filemtime(), когда нужно получить информацию о стороннем файле (например, шаблоне, CSS-файле).

stat()

Функция stat(string $filename) возвращает массив со статистической информацией о файле, включая время последней модификации (элемент с индексом 9 или 'mtime'). Её использование оправдано, когда требуется получить комплексные данные о файле.

Альтернативы в других языках

Getlastmod в Python

В модуле os.path используется функция getmtime().

import os.path, time
last_mod = os.path.getmtime(__file__)
print(last_mod)
print(time.ctime(last_mod))
1726147200.0
Thu Sep 12 14:30:00 2024
JavaScript (Node.js)

В Node.js информацию о файле предоставляет модуль fs и метод statSync().

const fs = require('fs');
const stats = fs.statSync(__filename);
console.log(stats.mtime);
console.log(stats.mtime.toLocaleString('ru-RU'));
2024-09-12T11:30:00.000Z
12.09.2024, 14:30:00

Getlastmod в MySQL

Прямого аналога нет, но информацию о времени изменения таблиц можно получить через запрос.

SELECT UPDATE_TIME FROM information_schema.tables 
WHERE TABLE_SCHEMA = 'database_name' AND TABLE_NAME = 'table_name';

Типичные ошибки

Ожидание, что функция всегда вернет значение

Функция может вернуть FALSE в случае ошибки. Рекомендуется проверять результат.

// Неправильно
$formattedDate = date('Y-m-d', getlastmod()); // Может вызвать предупреждение, если FALSE

// Правильно
$lastMod = getlastmod();
if ($lastMod !== false) {
    $formattedDate = date('Y-m-d', $lastMod);
} else {
    $formattedDate = 'Дата неизвестна';
}
echo $formattedDate;
Дата неизвестна
Путаница с часовыми поясами

Функция возвращает Unix timestamp. При выводе даты нужно учитывать настройки часового пояса.

date_default_timezone_set('Europe/Moscow');
echo date('d.m.Y H:i:s', getlastmod());

Изменения в последних версиях PHP

Функция getlastmod() остается стабильной и не претерпела существенных изменений в последних основных версиях PHP, включая PHP 8.x. Её поведение и возвращаемое значение не изменились.

Расширенные примеры

Использование в механизме кеширования

Пример условного вывода контента, если скрипт не менялся с момента последнего посещения.

Пример php
session_start();
$lastVisit = $_SESSION['last_visit'] ?? 0;
$scriptModTime = getlastmod();

if ($scriptModTime && $scriptModTime <= $lastVisit) {
    echo 'Контент не изменился с вашего последнего визита.';
} else {
    // Генерация или вывод основного контента
    echo 'Новый или обновленный контент.';
    $_SESSION['last_visit'] = time();
}
Сравнение времени модификации разных файлов

Сравнение времени изменения основного скрипта и файла конфигурации.

Пример php
$scriptTime = getlastmod();
$configTime = filemtime('config.ini');

if ($configTime > $scriptTime) {
    echo 'Внимание: конфигурационный файл был изменен позже основного скрипта.';
}
Генерация тега Last-Modified для заголовков HTTP

Использование функции для отправки HTTP-заголовка.

Пример php
$lastMod = getlastmod();
if ($lastMod && !headers_sent()) {
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastMod) . ' GMT');
    // Дальнейшая логика кеширования...
}
Интеграция в систему сборки

Вывод информации о версии сборки на основе времени изменения скрипта.

Пример php
$buildNumber = getlastmod();
echo 'Версия сборки: ' . ($buildNumber ? date('Ymd-His', $buildNumber) : 'DEV');
Версия сборки: 20240912-143000

PHP getlastmod function comments

En
Getlastmod Gets time of last page modification