PHP 8.5.0 Alpha 1 available for testing

stream_copy_to_stream

(PHP 5, PHP 7, PHP 8)

stream_copy_to_streamCopia datos desde un flujo hacia otro

Descripción

stream_copy_to_stream(
    resource $from,
    resource $to,
    ?int $length = null,
    int $offset = 0
): int|false

Realiza una copia de hasta length bytes de datos desde la posición actual del puntero (o desde la posición offset, si se especifica) en el flujo from hacia el parámetro to. Si length no está especificado, se copiará todo el resto del flujo from.

Parámetros

from

El flujo de origen

to

El flujo de destino

length

Número máximo de bytes a copiar. Por omisión, se copian todos los bytes restantes.

offset

El desplazamiento donde comenzar la copia de datos

Valores devueltos

Devuelve el número total de bytes copiados, o false en caso de error.

Historial de cambios

Versión Descripción
8.0.0 length ahora es nullable.

Ejemplos

Ejemplo #1 Ejemplo con stream_copy_to_stream()

<?php
$src
= fopen('http://www.example.com', 'r');
$dest1 = fopen('first1k.txt', 'w');
$dest2 = fopen('remainder.txt', 'w');

echo
stream_copy_to_stream($src, $dest1, 1024) . " bytes copiados a first1k.txt\n";
echo
stream_copy_to_stream($src, $dest2) . " bytes copiados a remainder.txt\n";

?>

Ver también

add a note

User Contributed Notes 2 notes

up
2
divinity76 at gmail dot com
6 years ago
note that this function does not actually use sendfile() on linux systems (at least not in PHP 7.2.12)
up
2
none at noone dot com
18 years ago
stream_copy_to_stream almost copies a stream...

$objInputStream = fopen("php://input", "rb");
$objTempStream = fopen("php://temp", "w+b");
stream_copy_to_stream($objInputStream, $objTempStream);

That code will copy a stream but it will also move the stream pointers to EOF. This is fine if you plan on rewinding the temp stream but good luck rewinding the input stream.

rewind($objTempStream);
rewind($objInputStream);

So as you can see this is stream copy or stream move depending on what kind of stream you are working with, and because there are no peaking functions your effed if you need to read from an input stream in multiple classes that are unrelated.
To Top