(No hay información de versión disponible, podría estar únicamente en SVN)
QuickHashStringIntHash::loadFromFile — Este método de fabricación crea un hash desde un fichero
$filename
[, int $size
= 0
[, int $options
= 0
]] )Este método de fabricación crea un nuevo hash desde un fichero de definición del disco. El formato del fichero consiste en una signatura 'QH\0x12\0', el número de elementos como un número entero de 32 bits con signo en el Endianness del sistema, un número entero de 32 sin signo que contiene el número de datos del elemento a seguir en caracteres. Estos datos del elemento contienen todos los strings. Le sigue otro entero de 32 bits con signo que contiene el número de listas de recipientes. Después de la cabecera y los strings, le siguien los elementos. Están ordenados por lista de recipientes, por lo que a las claves no les tendrá que realizar un hash para poder restablecer el hash. Por cada lista de recipientes, se almacena la siguiente información (todos como enteros de 32 bits): el índeice de la lista de recipientes, el número de elementos de dicha lista, y luego, en parejas de dos enteros de 32 bits sin signo, los elementos, donde el primero es el índice dentro de la lista de cadenas que contiene las claves, y el segundo el valor. Un ejemplo podría ser:
Ejemplo #1 Formato de fichero de StringIntHash de QuickHash
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
Ejemplo #2 Formato de fichero de StringIntHash de QuickHash
signatura de la cabecera ('QH'; tipo de clave: 2; tipo de valor: 1; relleno: \0x00) 00000000 51 48 21 00 número de elementos: 00000004 02 00 00 00 longitud de los valores de string (9 caracteres): 00000008 09 00 00 00 número de listas de recipientes (esto normalmente se configura para los hash como argumento del constructor, 64 en este caso): 0000000C 40 00 00 00 valores de string: 00000010 4f 4e 45 00 4e 49 4e 45 00 lista de recipientes: lista de recipientes 1 (con clave 7, y 1 elemento): cabecera: 07 00 00 00 01 00 00 00 elementos (índice de clave: 0 ('ONE'), valor = 0): 00 00 00 00 01 00 00 00 lista de recipientes 2 (con clave 0x2f, y 1 elemento): header: 2f 00 00 00 01 00 00 00 elementos (índice de clave: 4 ('NINE'), valor = 0): 04 00 00 00 03 00 00 00
filename
El nombre de fichero del fichero desde donde leer el hash.
size
La cantidad de de listas de recipientes a configurar. El número proporcionado será automáticamente redondeado hacia arriba a la potencia de dos más cercana. Tambíen será automáticamente limitado de 4 a 4194304.
options
Las mismas opciones que toma el constructor de la clase; excepto que se ignora la opción 'size'. Ésta se lee desde el formato de fichero (a diferencia de las clases QuickHashIntHash y QuickHashIntStringHash, donde se calcula automáticamente desde el número de entradas del hash.)
Devuelve un nuevo objeto QuickHashStringIntHash.
Ejemplo #3 Ejemplo de QuickHashStringIntHash::loadFromFile()
<?php
$fichero = dirname( __FILE__ ) . "/simple.hash.string";
$hash = QuickHashStringIntHash::loadFromFile(
$fichero,
QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $clave )
{
$i = 48712 + $clave * 1631;
$k = base_convert( $i, 10, 36 );
echo $k, ' => ', $hash->get( $k ), "\n";
}
?>
El resultado del ejemplo sería algo similar 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