hash_update_stream () est une fonction de PHP qui est utilisée pour hacher le flux de données. Cette fonction fait partie de l'extension de hachage dans PHP, ce qui fournit un moyen plus efficace de calculer lors du hachage de grandes quantités de données. Cette fonction est généralement utilisée dans les scénarios où la valeur de hachage doit être mise à jour étape par étape, plutôt que de lire les données entières à la fois.
La fonction hash_update_stream () met à jour progressivement la valeur de hachage en traitant le flux de données. Ceci est très efficace pour gérer de grands fichiers ou obtenir des données à partir de flux de réseau, car les données peuvent être lues par blocs par bloc et hachage mis à jour sans charger toutes les données dans la mémoire. Cette fonction est généralement utilisée en conjonction avec hash_init () et hash_final () pour terminer le processus de calcul de hachage.
bool hash_update_stream ( resource $context , resource $stream [, int $length ] )
$ Context : est une ressource de contexte de hachage initialisée par la fonction hash_init () .
$ Stream : La ressource de flux pour lire les données peut être un flux de fichiers, un flux de réseau, etc.
$ Longueur : Paramètre facultatif, spécifiant le nombre d'octets à lire.
La fonction hash_update_stream () peut être utilisée pour gérer plusieurs types de ressources. Voici les types de ressources pris en charge par cette fonction:
Ressources de flux de fichiers
Il s'agit du type de ressource le plus courant et convient aux opérations de lecture de fichiers. Vous pouvez ouvrir le flux de fichiers via des fonctions telles que fopen () ou file_get_contents () et la transmettre à la fonction hash_update_stream () . De cette façon, la fonction lira progressivement le contenu du fichier et mettra à jour la valeur de hachage.
Exemple de code:
$file = fopen('http://m66.net/somefile.txt', 'r'); // Ouvrez le flux de fichiers
$hash_context = hash_init('sha256'); // Initialiser le contexte du hachage
hash_update_stream($hash_context, $file); // Mettre à jour le hachage
fclose($file); // Fermez le flux de fichiers
Ressources de flux de réseau
hash_update_stream () prend également en charge la mise à jour des valeurs de hachage à partir des flux de ressources réseau. Ce type de ressource peut ouvrir une connexion réseau via la fonction fopen () . Par exemple, vous pouvez ouvrir un flux HTTP et lire les données étape par étape.
Exemple de code:
$url = 'http://m66.net/somefile.txt';
$stream = fopen($url, 'r'); // OuvrirURLcouler
$context = hash_init('sha256'); // Initialiser le contexte du hachage
hash_update_stream($context, $stream); // 逐步Mettre à jour le hachage值
fclose($stream); // 关闭couler
Flux d'entrée standard
Sur la ligne de commande, PHP peut gérer les flux d'entrée standard. hash_update_stream () prend également en charge les mises à jour de hachage des flux d'entrée standard (tels que les flux obtenus via php: // stdin ).
Exemple de code:
$stdin = fopen('php://stdin', 'r'); // Ouvrir标准输入couler
$context = hash_init('sha256'); // Initialiser le contexte du hachage
hash_update_stream($context, $stdin); // 逐步Mettre à jour le hachage值
fclose($stdin); // 关闭标准输入couler
Stream de mémoire (via php: // temp ou php: // mémoire)
Vous pouvez également utiliser les ressources de streaming de mémoire de PHP (par exemple via php: // temp ou php: // mémoire ). Ces flux peuvent stocker des données temporaires et sont idéaux pour traiter les petites et moyennes quantités de données.
Exemple de code:
$memory_stream = fopen('php://temp', 'r+'); // Ouvrir内存couler
fwrite($memory_stream, 'Hello, this is a test string.');
rewind($memory_stream); // 重置couler指针到开始位置
$context = hash_init('sha256'); // Initialiser le contexte du hachage
hash_update_stream($context, $memory_stream); // 逐步Mettre à jour le hachage值
fclose($memory_stream); // 关闭内存couler
La fonction hash_update_stream () peut gérer une variété de types de ressources de flux, y compris des flux de fichiers, des flux de réseau, des flux d'entrée standard et des flux de mémoire. Que vous lisiez des fichiers à partir du disque, l'obtention de données du réseau ou le traitement des données temporaires en mémoire, vous pouvez utiliser cette fonction pour mettre à jour progressivement la valeur de hachage. Cela le rend très efficace et efficace lors de la gestion des fichiers volumineux ou de l'obtention de flux de données en temps réel.