Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Php: // Stdin und Hash_Update_Stream () Befehlszeilenverarbeitung

Verwenden Sie Php: // Stdin und Hash_Update_Stream () Befehlszeilenverarbeitung

M66 2025-05-27

Wenn Sie in PHP große Dateien verarbeiten, kann das direkte Laden der gesamten Datei für Hash -Berechnungen eine Menge Speicherressourcen in Anspruch nehmen, insbesondere wenn die Dateien sehr groß sind. Um dieses Problem zu lösen, liefert PHP die Funktion PHP: // STDIN Stream und Hash_Update_Stream () . Die Kombination der beiden kann die Streaming -Hash -Verarbeitung implementieren, dh Hash -Berechnung beim Lesen des Dateiinhalts, um den Speicherüberlauf zu vermeiden.

In diesem Artikel wird zeigen, wie diese beiden Tools zum Streaming von Hash -Berechnungen in der Befehlszeile verwendet werden, insbesondere bei der Arbeit mit großen Dateien, wie die Hash -Werte effizient berechnet werden.

1. Vorbereitung

Stellen Sie zunächst sicher, dass Sie PHP installiert haben und in der Lage sind, PHP -Skripte aus der Befehlszeile auszuführen. Sie können bestätigen, ob PHP korrekt installiert ist, indem Sie den folgenden Befehl folgen:

 php -v

Wenn Sie PHP nicht installiert haben, können Sie PHP unter http://m66.net/download/php herunterladen und installieren.

Als nächstes verwenden wir PHP-integrierte Php: // stdin Stream, um die Standardeingabe zu lesen und die Funktion von Hash_Update_Stream () für die Hash-Berechnung zu kombinieren.

2. Verwenden Sie Php: // Stdin und Hash_Update_Stream () zum Streaming von Hashing

Einführung in PHP: // Stdin

PHP: // stdin ist ein spezieller Stream, mit dem Sie Daten aus Standardeingaben lesen können (normalerweise der Eingabestream aus der Befehlszeile). Sie können es verwenden, um große Dateien oder Live -Eingabestreams zu verarbeiten, ohne die gesamten Daten in den Speicher zu laden.

Hash_update_stream () Funktion

Die Funktion von Hash_Update_Stream () ist eine der von PHP verwendeten Funktionen zur Berechnung von Hash -Werten. Im Gegensatz zur regulären Funktion Hash_Update () können Sie den Hash -Wert direkt über den Stream aktualisieren, was ihn beim Umgang mit Big Data besonders nützlich macht.

Funktionsprototyp:

 bool hash_update_stream ( resource $context , resource $stream [, int $length = 8192 ] )
  • $ context : Hash -Kontext von Hash_init () .

  • $ stream : Der Stream zur Berechnung von Hash (in unserem Fall Php: // stdin ).

  • $ Länge : Die maximale Anzahl von Bytes, die jeweils gelesen werden (Standardeinstellung beträgt 8192 Bytes).

3. Beispielcode

Hier ist ein einfaches Beispiel, das zeigt, wie man PHP: // stdin und Hash_Update_Stream () für Streaming -Hash -Berechnungen verwendet.

Beispiel: Lesen und berechnen Sie Hash aus Standardeingabe

 <?php

// Erstellen a SHA256 Hash -Kontext
$context = hash_init('sha256');

// Offen php://stdin fließen
$stream = fopen('php://stdin', 'r');

// Jeweils lesen 8192 Bytes von Daten und Aktualisieren von Hash -Wert
while (!feof($stream)) {
    $data = fread($stream, 8192);
    hash_update_stream($context, $data);
}

// Berechnen Sie den endgültigen Hash -Wert
$hash = hash_final($context);

// Ausgabe des berechneten Hash -Werts
echo "Der berechnete Hash -Wert ist:$hash\n";

// 关闭fließen
fclose($stream);

?>

Betriebsmodus

  1. Speichern Sie den obigen Code als Hash_stdin.php .

  2. Rohrdaten zum Skript für Hash -Berechnungen in der Befehlszeile. Lesen Sie beispielsweise eine Datei und berechnen Sie ihren SHA256 -Hash:

 cat largefile.txt | php hash_stdin.php

Alternativ können Sie direkt Hash -Berechnungen durch Eingabe durchführen:

 echo "Hello, World!" | php hash_stdin.php

4. Code Erläuterung

  1. Erstellen Sie einen Hash -Kontext:
    Erstellen Sie einen SHA256 -Hash -Kontext mit Hash_init ('SHA256') . Sie können 'SHA256' durch andere unterstützte Hashing -Algorithmen wie MD5 , SHA1 usw. ersetzen.

  2. Öffnen Sie den Standardeingangsstream:
    fopen ('php: // stdin', 'r') öffnet einen Stream, der auf die Standardeingabe zeigt. Auf diese Weise können wir die Eingabedaten aus der Befehlszeile lesen.

  3. Lesen und aktualisieren Sie den Hash:
    Verwenden Sie Fread () , um den Datenblock nach Block (8192 Bytes werden jedes Mal gelesen) zu lesen, und verwenden Sie dann Hash_Update_Stream (), um die Hash -Berechnung zu aktualisieren.

  4. Berechnen Sie den endgültigen Hash -Wert:
    Sobald die Datei gelesen wurde, rufen Sie Hash_Final () auf, um den endgültigen Hash -Wert zu berechnen und zu erhalten.

  5. Ausgabehashwert:
    Verwenden Sie Echo , um den berechneten Hash -Wert in die Befehlszeile auszugeben.

5. anwendbare Szenarien

  • Umgang mit großen Dateien: Die Verwendung von Php: // stdin und Hash_Update_Stream () ist eine ideale Lösung, wenn Sie große Dateien verarbeiten müssen, ohne sie vollständig in den Speicher zu laden. Sie können Daten Schritt für Schritt lesen und Hash -Berechnungen durchführen.

  • Echtzeitdatenstrom: Dies ist auch möglich, wenn Sie den Echtzeitdatenstrom hasht, z.

6. Dinge zu beachten

  • Stellen Sie beim Umgang mit sehr großen Dateien sicher, dass die Anzahl der gelesenen Bytes ( Länge ) vernünftig eingestellt ist. Standardmäßig liest Fread () bis zu 8192 Daten Bytes gleichzeitig und kann auf einen größeren Wert angepasst werden, um die Leistung bei Bedarf zu verbessern.

  • Stellen Sie bei der Verwendung von Streaming immer sicher, dass Sie die Streaming -Ressourcen nach Abschluss des Betriebs schließen, um Ressourcenleckage zu vermeiden.

7. Schlussfolgerung

Durch die Kombination von PHP: // Stdin und Hash_Update_Stream () können Sie die Hash-Berechnungen großer Dateien oder Echtzeitdatenströme sehr effizient verarbeiten. Diese Methode spart nicht nur Speicher, sondern ermöglicht auch einfache und schnelle Hash -Berechnungen in der Befehlszeile. Wenn Sie an einer riesigen Datei- oder Streaming -Daten arbeiten, wird diese Streaming -Methode dringend empfohlen.

Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie Sie PHP zum Streaming von Hashing in der Befehlszeile verwenden. Wenn Sie Fragen oder weitere Fragen haben, können Sie mir gerne fragen!