Última Modificação da Página em PHP: Função getlastmod()

Por que informar a última atualização é crucial?

Quase sempre, é extremamente importante saber quando foi a última vez que uma página web foi modificada. Imagine que você gerencia um site de promoções, um portal de notícias ou um blog de tecnologia. É essencial exibir a data e o horário das postagens para que os usuários saibam se as informações estão "fresquinhas" ou se aquela promoção imperdível já expirou.

Além da confiança do usuário, os motores de busca (como o Google) amam conteúdo atualizado. Mostrar de forma clara quando um arquivo foi alterado ajuda os robôs de busca a indexarem seu site com mais eficiência.


Obtendo a Data de Modificação: A função getlastmod()

Para que serve a getlastmod() no PHP?
A função getlastmod() (Get Last Modification) é uma função nativa do PHP que verifica os metadados do arquivo atual no servidor e retorna a data exata em que o script (o arquivo .php) foi salvo/modificado pela última vez. O retorno é dado no formato de Unix Timestamp.

Sua invocação não requer nenhum parâmetro, pois ela olha automaticamente para o arquivo onde foi digitada. Vamos testar:


<?php
    echo getlastmod();
?>

Resultado esperado: 1551106973

Ou seja, ela vai te retornar um Timestamp. Mas convenhamos, você não vai exibir isso para o seu visitante, certo? Dizer "Última atualização: 1551106973 segundos desde a Era Unix" espantaria qualquer cliente!


Formatando a Saída (Lidando com o Padrão Antigo e o Moderno)

Como vimos nas aulas passadas, precisamos de um tradutor para transformar esse Timestamp em algo humano.

O Padrão Clássico (Sistemas Legados)

Em sistemas mais antigos (PHP 7 ou inferior), a prática comum era usar a função strftime() combinada com a setlocale() para exibir a data em português. O código ficava assim:


<?php
    // CÓDIGO LEGADO (Não recomendado para projetos novos)
    setlocale(LC_ALL, 'pt_BR.utf8');
    echo "Última atualização: " . strftime('%d/%B/%G às %H:%M:%S', getlastmod());
?>

Resultado: Última atualização: 25/fevereiro/2019 às 12:08:28

O Padrão Moderno (Obrigatório no PHP 8+)

Como a função strftime() foi descontinuada para evitar bugs em servidores globais, a forma correta e recomendada pelo mercado atual é utilizar a poderosa função date() (se quiser exibir em formato numérico simples) ou a classe IntlDateFormatter (para texto em português).

Veja como é simples e moderno resolver o problema hoje em dia:


<?php
    // 1. O jeito mais fácil (Formato numérico universal)
    $ultima_att = getlastmod();
    echo "Atualizado em: " . date("d/m/Y H:i:s", $ultima_att);
    echo "<br>";

    // 2. O jeito profissional em Português (Classe Intl)
    $formatador = new IntlDateFormatter('pt_BR', IntlDateFormatter::LONG, IntlDateFormatter::SHORT);
    echo "Revisado em: " . $formatador->format($ultima_att);
?>

Bem mais elegante e seguro, não é?


🚨 A Armadilha do Banco de Dados (Cuidado!)

Muitos iniciantes colocam a função getlastmod() na página index.php de um e-commerce e esperam que a data mude quando eles adicionam um novo produto no Banco de Dados (MySQL). Isso NÃO vai acontecer!

A função getlastmod() lê única e exclusivamente a data em que o arquivo de texto .php foi editado no seu editor de código (VS Code, Sublime) e salvo no servidor. Ela não sabe se os dados vindos do banco mudaram. Para rastrear atualizações de banco de dados, você deve ter uma coluna updated_at na sua tabela MySQL.


Técnica Avançada de SEO: Cabeçalhos HTTP (HTTP Headers)

Se você quer que seu site voe nos rankings do Google e economize banda do servidor, você pode ir além de apenas imprimir o texto no HTML do rodapé.

Você pode usar a getlastmod() combinada com a função header() para avisar invisivelmente ao navegador do usuário e aos robôs do Google que a página não mudou desde a última visita deles, permitindo que eles carreguem a página do cache instantaneamente.


<?php
    // Pega a data de modificação
    $timestamp_modificacao = getlastmod();
    
    // Formata exatamente no padrão exigido pelo protocolo HTTP (RFC 2822)
    $data_http = gmdate('D, d M Y H:i:s', $timestamp_modificacao) . ' GMT';

    // Envia o cabeçalho invisível antes de qualquer HTML
    header("Last-Modified: " . $data_http);
?>
<!DOCTYPE html>
<html>
  <!-- O resto do seu site aqui -->

Pare de Cometer Erros de Amador. Torne-se um Profissional. 💼

"Eu demorava dias tentando entender por que o navegador não atualizava meu site e por que o Google não indexava minhas páginas. A apostila me ensinou a controlar os Cabeçalhos HTTP e dominou minhas dúvidas!" - Rafael M., Desenvolvedor Web.

Dicas espalhadas pela internet muitas vezes omitem o "porquê" das coisas. Se você deseja entender profundamente como o PHP se comunica com o navegador, gerencia cache e estrutura lógicas completas, você precisa da Apostila Oficial de PHP Progressivo. Estude no seu ritmo, de forma sequencial e garanta seu certificado ao final.

📥 Baixar Apostila PHP Progressivo Agora

Consolide seu Conhecimento (O que estudar a seguir)

Para dominar o controle de dados no PHP, continue navegando pelos conceitos essenciais:

  • Reforço de Formatação: Ficou na dúvida sobre a função date()? Releia a Aula Completa sobre a função date().
  • Entenda os Cabeçalhos: Quer aprofundar na mágica do SEO e Cache? Estude Como manipular a Função header() no PHP.
  • Documentação Oficial: Sempre consulte os detalhes minuciosos e retornos no Manual do PHP sobre a getlastmod.

Perguntas Frequentes (FAQ) da Comunidade

A função getlastmod() funciona para arquivos incluídos via require/include?

Não diretamente. A função getlastmod() retorna sempre a data do script principal que está sendo executado no navegador (o "pai"). Se você a chamar dentro de um arquivo menu.php que foi incluído no index.php, ela retornará a data de modificação do index.php. Para saber a data de modificação de um arquivo específico incluído, utilize a função nativa filemtime("menu.php").

O que acontece se eu mudar o arquivo de servidor via FTP? A data muda?

Depende de como o seu cliente de FTP está configurado. A grande maioria dos clientes (como o FileZilla) preserva a data original do arquivo. No entanto, se o arquivo for recriado no servidor, a data capturada por getlastmod() passará a ser o instante exato do upload. Por isso, gerenciar atualizações atreladas a banco de dados costuma ser mais confiável em grandes portais.

Nenhum comentário: