(No version information available, might only be in Git)
QuickHashStringIntHash::loadFromFile — Este método de fábrica cria um hash de um arquivo
$filename
, int $size
= 0, int $options
= 0): QuickHashStringIntHash
Este método de fábrica cria um novo hash a partir de um arquivo de definição em disco. O formato do arquivo
consiste em uma assinatura 'QH\0x21\0'
, o número de elementos como
um inteiro com sinal de 32 bits na ordem de bytes do sistema, um inteiro sem sinal de 32 bits
contendo o número de dados do elemento a seguir em caracteres. Este elemento
contém todas as strings. Segue-se outro inteiro com sinal de 32 bits
contendo o número de listas de buckets. Após o cabeçalho e as strings,
os elementos seguem. Eles são ordenados por lista de buckets para que as chaves não
precisem ser sofrer hash para restaurar o hash. Para cada lista de buckets, as
seguintes informações são armazenadas (todas como inteiros de 32 bits): o índice da lista de buckets,
o número de elementos nessa lista e, em pares de dois
inteiros sem sinal de 32 bits, os elementos, onde o primeiro é o índice
na lista de strings que contém as chaves e o segundo, o valor. Um
exemplo poderia ser:
Exemplo #1 Formato de arquivo QuickHash StringIntHash
00000000 51 48 21 00 02 00 00 00 09 00 00 00 40 00 00 00 |QH!.........@...| 00000010 4f 4e 45 00 4e 49 4e 45 00 07 00 00 00 01 00 00 |ONE.NINE........| 00000020 00 00 00 00 00 01 00 00 00 2f 00 00 00 01 00 00 |........./......| 00000030 00 04 00 00 00 03 00 00 00 |.........| 00000039
Exemplo #2 Formato de arquivo QuickHash IntHash
assinatura de cabeçalho ('QH'; tipo de chave: 2; tipo de valor: 1; preenchimento: \0x00) 00000000 51 48 21 00 número de elementos: 00000004 02 00 00 00 comprimento dos valores string (9 caracteres): 00000008 09 00 00 00 número de listas de buckets de hashes (normalmente configurado para hashes como argumento para o construtor, 64 neste caso): 0000000C 40 00 00 00 valores string: 00000010 4f 4e 45 00 4e 49 4e 45 00 listas de buckets: lista de bucket 1 (com chave 7 e 1 elemento): cabeçalho: 07 00 00 00 01 00 00 00 elementos (índice de chave: 0 ('ONE'), valor = 0): 00 00 00 00 01 00 00 00 lista de bucket 2 (com chave 0x2f, e 1 elemento): cabeçalho: 2f 00 00 00 01 00 00 00 elementos (índice de chave: 4 ('NINE'), valor = 3): 04 00 00 00 03 00 00 00
filename
O nome do arquivo do qual o hash será lido.
size
A quantidade de listas de buckets a serem configuradas. O número informado será
automaticamente arredondado para a próxima potência de dois. Também é
automaticamente limitado de 4
a 4194304
.
options
As mesmas opções que o construtor da classe aceita; exceto que a opção de tamanho é ignorada. Ela é lida a partir do formato de arquivo (ao contrário das classes QuickHashIntHash e QuickHashIntStringHash, onde é calculada automaticamente a partir do número de entradas no hash).
Retorna um novo QuickHashStringIntHash.
Exemplo #3 Exemplo de QuickHashStringIntHash::loadFromFile()
<?php
$file = dirname( __FILE__ ) . "/simple.hash.string";
$hash = QuickHashStringIntHash::loadFromFile(
$file,
QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
$i = 48712 + $key * 1631;
$k = base_convert( $i, 10, 36 );
echo $k, ' => ', $hash->get( $k ), "\n";
}
?>
O exemplo acima produzirá algo semelhante a:
11l4 => 48712 12uf => 50343 143q => 51974 15d1 => 53605 16mc => 55236 17vn => 56867 194y => 58498 1ae9 => 60129 1bnk => 61760 1cwv => 63391 1e66 => 65022 1ffh => 66653 1gos => 68284 1hy3 => 69915 1j7e => 71546 1kgp => 73177