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(string $filename) возвращает время последнего изменения указанного файла. В отличие от getlastmod(), она работает с любым файлом, а не только с исполняемым скриптом. Предпочтительнее использовать filemtime(), когда нужно получить информацию о стороннем файле (например, шаблоне, CSS-файле).
Функция 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
В 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. Её поведение и возвращаемое значение не изменились.
Расширенные примеры
Пример условного вывода контента, если скрипт не менялся с момента последнего посещения.
session_start();
$lastVisit = $_SESSION['last_visit'] ?? 0;
$scriptModTime = getlastmod();
if ($scriptModTime && $scriptModTime <= $lastVisit) {
echo 'Контент не изменился с вашего последнего визита.';
} else {
// Генерация или вывод основного контента
echo 'Новый или обновленный контент.';
$_SESSION['last_visit'] = time();
}Сравнение времени изменения основного скрипта и файла конфигурации.
$scriptTime = getlastmod();
$configTime = filemtime('config.ini');
if ($configTime > $scriptTime) {
echo 'Внимание: конфигурационный файл был изменен позже основного скрипта.';
}Использование функции для отправки HTTP-заголовка.
$lastMod = getlastmod();
if ($lastMod && !headers_sent()) {
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastMod) . ' GMT');
// Дальнейшая логика кеширования...
}Вывод информации о версии сборки на основе времени изменения скрипта.
$buildNumber = getlastmod();
echo 'Версия сборки: ' . ($buildNumber ? date('Ymd-His', $buildNumber) : 'DEV');Версия сборки: 20240912-143000