QuickHashStringIntHash::loadFromFile

(No version information available, might only be in Git)

QuickHashStringIntHash::loadFromFileEste método de fabricación crea un hash desde un fichero

Descripción

public static QuickHashStringIntHash::loadFromFile ( string $filename [, int $size = 0 [, int $options = 0 ]] ) : QuickHashStringIntHash

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

Parámetros

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.)

Valores devueltos

Devuelve un nuevo objeto QuickHashStringIntHash.

Ejemplos

Ejemplo #3 Ejemplo de QuickHashStringIntHash::loadFromFile()

<?php
$fichero 
dirname__FILE__ ) . "/simple.hash.string";
$hash QuickHashStringIntHash::loadFromFile(
    
$fichero,
    
QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( 
range00x0f ) as $clave )
{
    
$i 48712 $clave 1631;
    
$k base_convert$i1036 );
    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