Dans PHP, la fonction hash_update_stream est une méthode pour mettre à jour dynamiquement les valeurs de hachage, en particulier lors du traitement des données de flux. Combiné avec CURL , il peut réaliser le calcul de la valeur de hachage en temps réel lors du téléchargement de fichiers volumineux ou des données de streaming. Dans cet article, nous explorerons comment utiliser hash_update_stream et curl pour y parvenir.
La fonction hash_update_stream est l'une des fonctions de hachage intégrées dans PHP, qui est utilisée pour mettre à jour progressivement les calculs de hachage. Cela signifie que lorsque nous traitons une grande quantité de flux de données, nous pouvons progressivement calculer la valeur de hachage du fichier sans charger le fichier entier en mémoire. Sa syntaxe est la suivante:
bool hash_update_stream ( resource $context , resource $stream )
$ Context : la ressource de contexte de hachage qui a été initialisée à l'aide de hash_init () .
$ Stream : la ressource du flux de données, généralement créé via un flux de fichiers ou de réseau.
Curl est une puissante extension PHP qui vous permet d'interagir avec différentes ressources de réseau via URL. Grâce à Curl , nous pouvons envoyer des demandes au serveur et recevoir des réponses, en prenant en charge plusieurs protocoles tels que HTTP, HTTPS, FTP, etc. Dans notre scénario d'application, Curl peut être utilisé pour télécharger des ressources distantes et remettre le flux de données vers la fonction hash_update_stream pour la calcul de hachage.
Dans cet exemple, nous utiliserons Curl pour télécharger le fichier dynamiquement et calculer la valeur de hachage du fichier en temps réel en combinaison avec la fonction hash_update_stream .
Tout d'abord, nous devons initialiser un contexte de hachage. Nous pouvons choisir des algorithmes de hachage couramment utilisés, tels que Sha256 .
$hashContext = hash_init('sha256'); // initialisation sha256 Contexte de hachage
Ensuite, nous initialiserons la session à l'aide de Curl et définirons les options correspondantes pour obtenir le flux de données du fichier distant.
$url = "http://example.com/largefile"; // Fichiers à télécharger URL
$ch = curl_init($url); // initialisation curl Session
// installation curl Options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Renvoie la réponse au lieu de la sortie directe
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Soutenir la redirection
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // interdire SSL Vérification du certificat(Convient aux certificats auto-signés)
// Ouvrez le flux de fichiers pour obtenir des données
$stream = curl_exec($ch);
Maintenant, nous pouvons utiliser la fonction hash_update_stream pour passer le flux de données obtenu par Curl pour effectuer des calculs de hachage en temps réel.
if ($stream) {
$fp = fopen('php://memory', 'r+'); // Créer des flux de mémoire
fwrite($fp, $stream); // Écrire du contenu téléchargé dans le flux de mémoire
rewind($fp); // Renvoyez le pointeur de flux à la position de départ
// utiliser hash_update_stream Mettre à jour dynamiquement la valeur de hachage
hash_update_stream($hashContext, $fp);
fclose($fp); // Fermer le ruisseau
}
Enfin, nous pouvons obtenir la valeur de hachage finale via hash_final () .