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

作成日: 更新日:

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

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

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

基本的な使い方

構文(syntax)

<?php

$context = hash_init('sha256');
$stream = fopen('php://temp', 'r+');
fwrite($stream, 'Hello, PHP!');
rewind($stream); // ストリームのポインタを先頭に戻す

$bytes_updated = hash_update_stream($context, $stream);
fclose($stream);

echo hash_final($context);

?>

引数(parameters)

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

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

戻り値(return)

int

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

【PHP8.x】hash_update_stream関数の使い方 | いっしー@Webエンジニア