使用するハッシュアルゴリズムはcrc32です。テーブル分割関数は次のとおりです:
コードをコピーします コードは次のとおりです:
関数_getHash($ユーザー名)
{
$hash = crc32($username) % 512;
戻り $hash;
}
関数_getTable($username)
{
$hash = self::_getHash($username);
'user_' を返します。
}
まず、ローカルの 32 ビット ウィンドウ マシン上でデータを生成し、対応するテーブルに挿入します。しかし、プログラムとデータをサーバー(64はLinux)に転送したところ、データが見つからないことがわかりました。調査の結果、サーバー上の crc32 の結果がローカルの結果と異なることが判明しました。 PHPのマニュアルを再度確認したところ、crc32インターフェースがこのマシンに関係していることが分かりました。
PHPマニュアルの説明:
コードをコピーします コードは次のとおりです:
PHP の整数型は符号付きであるため、32 ビット プラットフォームでは多くの crc32 チェックサムは負の整数になりますが、64 ビット インストールではすべての crc32() の結果は正の整数になります。
crc32 によって返される結果は 32 ビット マシンではオーバーフローするため、結果が負になる可能性があります。 64 ビット マシンではオーバーフローがないため、常に正になります。
crc32 関数は、php の 2 つの定数参照に従って PHP_INT_SIZE と PHP_INT_MAX を計算します
これら 2 つの定数の定義:
整数のワード サイズはプラットフォームに依存しますが、通常の最大値は約 20 億 (32 ビット符号付き) です。 PHP は符号なし整数をサポートしていません。整数値の語長は定数 PHP_INT_SIZE で表すことができます。PHP 4.4.0 および PHP 5.0.5 以降では、最大値は定数 PHP_INT_MAX で表すことができます。
次の 32 ビットを出力 PHP_INT_SIZE: 4、PHP_INT_MAX: 2147483647
出力 PHP_INT_SIZE: 8、PHP_INT_MAX: 9223372036854775807