Ce face hash_update_stream
hash_update_stream citește dintr-un stream deschis cu fopen și adaugă octeții citiți în contextul de hash. Cu $length citește cel mult acel număr de octeți; implicit citește până la final.
Stream-ul rămâne deschis și poziția avansează, deci poți continua citirea cu alt apel.
Parametri
| Parametru | Descriere |
|---|---|
$context |
Contextul creat cu hash_init. |
$stream |
Un stream deschis pentru citire. |
$length |
Opțional. Numărul maxim de octeți citiți; -1 înseamnă până la final. |
Ce returnează
Numărul de octeți adăugați.
Exemple
Exemplul 1: Citire în două etape
Textul are 15 octeți, pentru că litera „ș” ocupă 2.
<?php
file_put_contents("mesaj.txt", "Salut din Iași");
$ctx = hash_init("sha1");
$f = fopen("mesaj.txt", "r");
echo hash_update_stream($ctx, $f, 5) . " octeți\n";
echo hash_update_stream($ctx, $f) . " octeți\n";
fclose($f);
var_dump(hash_final($ctx) === sha1_file("mesaj.txt"));
Rezultat
5 octeți
10 octeți
bool(true)
Greșeli frecvente
- Dai un stream deschis doar pentru scriere (
"w"). Nu se citește nimic și amprenta este a unui text gol.
Comenzi înrudite
hash_update_file: Adaugă la un calcul de amprentă incremental tot conținutul unui fișier.hash_init: Pornește un calcul de amprentă incremental: datele se adaugă pe bucăți, iar rezultatul se obține la final.hash_final: Încheie un calcul de amprentă incremental și returnează rezultatul.