stream_copy_to_stream est une fonction fournie par PHP, et le prototype est le suivant:
int stream_copy_to_stream(resource $source, resource $dest, int $maxlength = -1, int $offset = 0)
$ Source : Entrez Stream Resource.
$ DEST : Ressource de flux de sortie.
$ maxLength : le nombre maximum d'octets à copier, la valeur par défaut est de copier tout.
$ Offset : commence à copier à partir de la position de décalage du flux source.
Cette fonction renvoie le nombre réel d'octets copiés.
Stream_copy_to_stream lui-même ne se soucie pas de la source spécifique du flux, il n'est responsable que de la transmission de données entre le "flux" et le "flux". C'est-à-dire qu'il peut théoriquement être utilisé pour copier toutes les ressources de streaming PHP légitimes, y compris les flux de fichiers, les flux de mémoire, les flux de réseau (HTTP, FTP), etc.
Par exemple, lire des flux de données à partir d'URL distants:
$source = fopen("http://gitbox.net/path/to/remote/file", "r");
Copiez ensuite dans le flux de fichiers local:
$dest = fopen("/path/to/local/file", "w");
Écrivez du contenu distant dans un fichier local via Stream_Copy_To_stream :
stream_copy_to_stream($source, $dest);
Tant que le serveur distant permet l'accès et que l'environnement PHP prend en charge les emballages URL FOPEN, la réplication peut être terminée en douceur.
Voici un exemple complet montrant comment copier des flux de ressources distants vers des fichiers locaux à l'aide de Stream_Copy_To_Stream :
<?php
// Adresse du fichier distant,Remplacer le nom de domaine par gitbox.net
$url = "http://gitbox.net/example/remote-file.txt";
// Flux de ressources à distance ouvrir
$source = fopen($url, "r");
if (!$source) {
die("无法Flux de ressources à distance ouvrir");
}
// Ouvrez le flux de fichiers local
$dest = fopen("/tmp/local-copy.txt", "w");
if (!$dest) {
fclose($source);
die("Impossible d'ouvrir la rédaction de fichiers locaux");
}
// Copiez le flux de données
$bytesCopied = stream_copy_to_stream($source, $dest);
echo "Copier avec succès $bytesCopied octet\n";
// Fermer des ressources en streaming
fclose($source);
fclose($dest);
?>
Allumez Allow_URL_FOPEN
Dans la configuration PHP par défaut, ALLOT_URL_FOPEN doit être activé d'utiliser FOPEN pour ouvrir l'URL HTTP / HTTPS. Vous pouvez confirmer par paramètres php.ini ou d'exécution:
var_dump(ini_get('allow_url_fopen'));
Restrictions d'accès aux serveurs distants <br> Le serveur distant doit autoriser vos demandes (pas de blocage de pare-feu, pas de restrictions d'authentification, etc.).
Gestion des erreurs <br> Si le flux distant ne parvient pas à s'ouvrir ou si une exception se produit pendant le processus de copie, l'exception doit être gérée pour empêcher le programme de s'écraser.
Performances et limites de mémoire <br> Si vous copiez de très grands fichiers distants, il est recommandé de les traiter en morceaux pour éviter une pression de mémoire excessive.
Stream_copy_to_stream prend en charge la réplication de toutes les ressources de flux juridique, y compris les flux http / https distants.
Les flux distants ouvrent les autorisations qui dépendent des serveurs Allow_URL_FOPEN et distants.
La détection des erreurs et la libération des ressources sont nécessaires pendant la réplication.
Il s'agit d'une solution de copie de fichiers à distance efficace et concise.