Position actuelle: Accueil> Derniers articles> Comment tester l'exactitude de hash_update_stream ()? Exemple de scripts automatisés

Comment tester l'exactitude de hash_update_stream ()? Exemple de scripts automatisés

M66 2025-05-27

Dans PHP, la fonction hash_update_stream () est une fonction très utile pour la mise à jour étape par étape des valeurs de hachage, en particulier lorsque le hachage est requis pour les grands flux de données. Pour s'assurer que la fonction peut fonctionner de manière stable et avec précision dans différents scénarios, il est crucial d'effectuer des tests efficaces. Cet article présentera comment tester efficacement l'exactitude de la fonction hash_update_stream () et est livré avec un exemple de script de test automatisé.

Qu'est-ce que hash_update_stream () ?

La fonction hash_update_stream () est une fonction de PHP utilisée pour mettre à jour les valeurs de hachage, et elle est utilisée avec hash_init () et hash_final () . Cette fonction nous permet d'effectuer des calculs de hachage étape par étape sur un flux de données (comme un fichier ou une autre ressource de flux).

grammaire:

 hash_update_stream(resource $context, resource $stream, int $length = 8192): bool
  • $ Context : Hash Context, créé via la fonction hash_init () .

  • $ Stream : une ressource de flux efficace, qui peut être un fichier, un flux de mémoire, etc.

  • $ Longueur : le nombre maximum d'octets par flux de lecture, la valeur par défaut est de 8192 octets.

Pourquoi tester hash_update_stream () ?

L'objectif principal de tester hash_update_stream () est d'assurer sa correction et ses performances dans diverses situations. Cela comprend:

  1. Assurez-vous que la fonction peut gérer les flux d'entrée de différentes tailles.

  2. Assurez-vous qu'il fonctionne bien dans l'utilisation et les performances de la mémoire.

  3. Assurez-vous que la valeur de hachage est correctement calculée sous différents contenus et conditions de flux.

Testez la stratégie de hash_update_stream ()

Pour tester hash_update_stream (), nous pouvons adopter la stratégie suivante:

  1. Test de base : testez si la fonction peut mettre à jour correctement la valeur de hachage.

  2. Test de fichiers grand : testez les capacités de traitement des grands fichiers ou de grands flux de données.

  3. Test des limites : par exemple, testez un flux vide, un très petit flux ou un flux de données qui dépasse la taille attendue.

  4. Test simultané : si nécessaire, testez la stabilité de la fonction dans des situations simultanées.

Exemple de scripts de test automatisés

Vous trouverez ci-dessous un exemple de script de test automatisé PHP simple qui est utilisé pour vérifier la fonctionnalité et les performances de base de la fonction hash_update_stream () .

 <?php

// Définir un algorithme de hachage
$algorithm = 'sha256';

// Chemin de fichier de test(Supposons qu&#39;il y a un fichier de test)
$filePath = '/path/to/testfile.txt';

// Initialiser le contexte du hachage
$context = hash_init($algorithm);

// Ouvrez le flux de fichiers
$stream = fopen($filePath, 'rb');
if (!$stream) {
    die('Impossible d&#39;ouvrir le fichier');
}

// Mettre à jour progressivement la valeur de hachage
while (!feof($stream)) {
    hash_update_stream($context, $stream, 8192);
}

// Obtenez la valeur de hachage finale
$hash = hash_final($context);

// Résultat de sortie
echo "La valeur de hachage du fichier est: " . $hash . PHP_EOL;

// Fermer le ruisseau
fclose($stream);

// Exemples de test automatisés - Conditions aux limites
function testEmptyStream($algorithm) {
    $context = hash_init($algorithm);
    $stream = fopen('php://memory', 'rb'); // Flux de mémoire vide
    hash_update_stream($context, $stream);
    $hash = hash_final($context);
    echo "La valeur de hachage du flux vide: " . $hash . PHP_EOL;
}

function testLargeStream($algorithm, $filePath) {
    $context = hash_init($algorithm);
    $stream = fopen($filePath, 'rb');
    $startTime = microtime(true);
    
    while (!feof($stream)) {
        hash_update_stream($context, $stream, 8192);
    }

    $hash = hash_final($context);
    $endTime = microtime(true);
    echo "Valeur de hachage des fichiers volumineux: " . $hash . PHP_EOL;
    echo "Temps de traitement: " . ($endTime - $startTime) . " Deuxième" . PHP_EOL;

    fclose($stream);
}

// Faire le test
testEmptyStream($algorithm);
testLargeStream($algorithm, $filePath);
?>

Explication du code

  1. Test de base :

    • Nous initialisons d'abord un contexte de contexte de hachage $ , puis mettons à jour progressivement la valeur de hachage en ouvrant un flux de fichiers $ Stream . Lisez 8192 octets du flux de fichiers et mettez à jour le hachage à chaque fois. Enfin, Hash_Final () est utilisé pour renvoyer la valeur de hachage finale.

  2. Test automatisé - Conditions aux limites :

    • La fonction testemptystream () teste la valeur de hachage d'un flux vide. Créez un flux de mémoire vide via php: // la mémoire et hachez-le.

  3. Test automatisé - Traitement des fichiers importants :

    • La fonction TestLargeGetReam () teste le calcul de hachage d'un grand fichier. Il calcule le temps de traitement en lisant un grand fichier et en calculant le hachage étape par étape pour évaluer les performances de la fonction.

Analyse des résultats du test

Lorsque vous effectuez ces tests, vous devez prêter attention aux aspects suivants:

  1. Cohérence des valeurs de hachage : pour le même flux d'entrée, hash_update_stream () doit toujours renvoyer la même valeur de hachage.

  2. Performances : Pour les fichiers volumineux ou les flux de données, les fonctions devraient être en mesure de traiter efficacement pour éviter le débordement de mémoire ou le blocage à long terme.

  3. Conditions limites : pour les flux vides, les flux de données extrêmement petits, etc., la fonction doit être en mesure de les gérer correctement et de renvoyer une valeur de hachage valide (comme les flux vides renvoie une valeur de hachage par défaut).

en conclusion

Grâce aux tests ci-dessus, vous pouvez vérifier l'exactitude de la fonction hash_update_stream () pour vous assurer qu'elle est stable et efficace dans une utilisation réelle. Avec les scripts de test automatisés, nous pouvons facilement simuler différents scénarios d'utilisation et effectuer des tests plus complets.

Assurez-vous que ces tests sont effectués régulièrement, en particulier lors de la mise à jour des versions PHP ou de la modification du code, peuvent vous aider à attraper rapidement des problèmes de fonctionnalités potentiels ou des goulots d'étranglement de performances.