【PHP8.x】hash_update_stream関数の使い方

hash_update_stream関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

hash_update_stream関数は、指定されたストリームからデータを読み込み、その内容を使ってハッシュコンテキストを更新する関数です。この関数は、特にファイルなどの大容量のデータからハッシュ値を計算する際に非常に有用です。データをメモリにすべて読み込むことなく、ストリームから少しずつデータを読み込んでハッシュ計算の状態(ハッシュコンテキスト)を逐次的に更新できるため、メモリ使用量を抑えながら効率的に処理を実行できます。

利用する際は、まずhash_init()関数でハッシュ計算のためのコンテキストを初期化します。次に、このhash_update_stream()関数に、初期化されたハッシュコンテキストと、データ源となるストリームリソース(例えば、fopen()で開かれたファイルハンドルなど)を渡します。オプションとして、ストリームから読み込むバイト数を指定することも可能で、これを省略した場合はストリームの終端まですべてのデータが読み込まれます。

最終的なハッシュ値を取得するためには、この関数による更新後にhash_final()関数を使用します。hash_update_stream()関数は、更新処理が成功した場合はtrueを、何らかの理由で失敗した場合はfalseを返します。これにより、大規模なデータソースに対して安全かつ効率的なハッシュ計算を実現できます。

構文(syntax)

1<?php
2
3$context = hash_init('sha256');
4$stream = fopen('php://temp', 'r+');
5fwrite($stream, 'Hello, PHP!');
6rewind($stream); // ストリームのポインタを先頭に戻す
7
8$bytes_updated = hash_update_stream($context, $stream);
9fclose($stream);
10
11echo hash_final($context);
12
13?>

引数(parameters)

HashContext $context, resource $stream, int $length = -1

  • HashContext $context: ハッシュ計算のコンテキストを指定するHashContextオブジェクト
  • resource $stream: ハッシュ計算の対象となるストリームリソース
  • int $length = -1: ストリームから読み込むバイト数を指定する整数。-1を指定すると、ストリームの終端まで全て読み込みます。

戻り値(return)

int

ハッシュコンテキストにデータチャンクを更新したバイト数を返します。

関連コンテンツ