stream_copy_to_stream
PHP Manual
PHP Manual»Funciones de Flujos»stream_copy_to_stream

stream_copy_to_stream

(PHP 5, PHP 7, PHP 8)

stream_copy_to_stream — Copia datos desde un flujo hacia otro

Descripción

function 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 from hacia to, comenzando en la posición actual de from, o en offset si es mayor que 0. Si length es null, se copiará todo el contenido restante de 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

Si es mayor que 0, la posición en from, contada desde el inicio del flujo, en la que comenzar la copia: from se mueve primero a esa posición, como con fseek() y SEEK_SET. Si es 0 (el valor por omisión) o negativo, no se realiza ninguna búsqueda y la copia comienza en la posición actual de from.

Valores devueltos

Devuelve el número total de bytes copiados, o false si ocurre un 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";

?>

Notas

Nota:

Cuando from es un flujo de socket en modo bloqueante, la copia se detiene en cuanto no se reciben datos dentro del tiempo límite del flujo, aunque no se haya alcanzado el final del flujo. Entonces puede devolverse false, aunque los datos leídos hasta ese momento ya se hayan escrito en to. Este tiempo límite es por omisión default_socket_timeout y puede cambiarse con stream_set_timeout().

Véase también

To Top