Ce face hash_update_file
hash_update_file deschide fișierul, îl citește pe bucăți și îl adaugă în context. Este utilă când vrei o singură amprentă pentru mai multe fișiere (de exemplu pentru a detecta dacă s-a schimbat ceva într-un director de resurse).
Parametri
| Parametru | Descriere |
|---|---|
$context |
Contextul creat cu hash_init. |
$filename |
Calea către fișier. |
$stream_context |
Opțional. Un context de stream. |
Ce returnează
true la succes, false dacă fișierul nu poate fi citit.
Exemple
Exemplul 1: O amprentă pentru mai multe fișiere CSS
Amprenta se poate pune în URL (stil.css?v=...), ca browserul să descarce din nou fișierele doar când se schimbă.
<?php
file_put_contents("baza.css", "body { margin: 0; }");
file_put_contents("tema.css", "body { color: #222; }");
$ctx = hash_init("xxh3");
foreach (["baza.css", "tema.css"] as $fisier) {
hash_update_file($ctx, $fisier);
}
echo "stil.css?v=" . hash_final($ctx);
Rezultat
stil.css?v=3ea51a878cc472a8
Greșeli frecvente
- Schimbi ordinea fișierelor între apeluri. Amprenta depinde de ordine; sortează lista înainte.
Comenzi înrudite
hash_update_stream: Adaugă la un calcul de amprentă incremental datele citite dintr-un stream deschis (fișier, rețea).hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.hash_init: Pornește un calcul de amprentă incremental: datele se adaugă pe bucăți, iar rezultatul se obține la final.