<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.stream.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.stream-copy-to-stream.php',
    1 => 'stream_copy_to_stream',
    2 => 'Copia datos desde un flujo hacia otro',
  ),
  'up' => 
  array (
    0 => 'ref.stream.php',
    1 => 'Funciones de Flujos',
  ),
  'prev' => 
  array (
    0 => 'function.stream-context-set-params.php',
    1 => 'stream_context_set_params',
  ),
  'next' => 
  array (
    0 => 'function.stream-filter-append.php',
    1 => 'stream_filter_append',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/stream/functions/stream-copy-to-stream.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.stream-copy-to-stream" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">stream_copy_to_stream</h1>
  <p class="verinfo">(PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">stream_copy_to_stream</span> &mdash; <span class="dc-title">Copia datos desde un flujo hacia otro</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.stream-copy-to-stream-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <span class="methodname"><strong>stream_copy_to_stream</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$from</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$to</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></span> <code class="parameter">$length</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$offset</code><span class="initializer"> = 0</span></span><br>): <span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   Realiza una copia de hasta <code class="parameter">length</code> bytes de datos
   desde <code class="parameter">from</code> hacia <code class="parameter">to</code>,
   comenzando en la posición actual de <code class="parameter">from</code>, o en
   <code class="parameter">offset</code> si es mayor que <code class="literal">0</code>.
   Si <code class="parameter">length</code> es <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, se copiará todo el contenido
   restante de <code class="parameter">from</code>.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.stream-copy-to-stream-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">from</code></dt>
     <dd>
      <p class="para">
       El flujo de origen
      </p>
     </dd>
    
    
     <dt><code class="parameter">to</code></dt>
     <dd>
      <p class="para">
       El flujo de destino
      </p>
     </dd>
    
    
     <dt><code class="parameter">length</code></dt>
     <dd>
      <p class="para">
       Número máximo de bytes a copiar. Por omisión, se copian todos los bytes restantes.
      </p>
     </dd>
    
    
     <dt><code class="parameter">offset</code></dt>
     <dd>
      <p class="simpara">
       Si es mayor que <code class="literal">0</code>, la posición en
       <code class="parameter">from</code>, contada desde el inicio del flujo,
       en la que comenzar la copia: <code class="parameter">from</code> se mueve
       primero a esa posición, como con <span class="function"><a href="function.fseek.php" class="function">fseek()</a></span> y
       <strong><code><a href="filesystem.constants.php#constant.seek-set">SEEK_SET</a></code></strong>.
       Si es <code class="literal">0</code> (el valor por omisión) o negativo, no se
       realiza ninguna búsqueda y la copia comienza en la posición actual de
       <code class="parameter">from</code>.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.stream-copy-to-stream-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve el número total de bytes copiados,  o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.stream-copy-to-stream-changelog">
  <h3 class="title">Historial de cambios</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versión</th>
      <th>Descripción</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">length</code> ahora es nullable.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.stream-copy-to-stream-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>stream_copy_to_stream()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
$src </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'http://www.example.com'</span><span style="color: #007700">, </span><span style="color: #DD0000">'r'</span><span style="color: #007700">);
</span><span style="color: #0000BB">$dest1 </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'first1k.txt'</span><span style="color: #007700">, </span><span style="color: #DD0000">'w'</span><span style="color: #007700">);
</span><span style="color: #0000BB">$dest2 </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'remainder.txt'</span><span style="color: #007700">, </span><span style="color: #DD0000">'w'</span><span style="color: #007700">);

echo </span><span style="color: #0000BB">stream_copy_to_stream</span><span style="color: #007700">(</span><span style="color: #0000BB">$src</span><span style="color: #007700">, </span><span style="color: #0000BB">$dest1</span><span style="color: #007700">, </span><span style="color: #0000BB">1024</span><span style="color: #007700">) . </span><span style="color: #DD0000">" bytes copiados a first1k.txt\n"</span><span style="color: #007700">;
echo </span><span style="color: #0000BB">stream_copy_to_stream</span><span style="color: #007700">(</span><span style="color: #0000BB">$src</span><span style="color: #007700">, </span><span style="color: #0000BB">$dest2</span><span style="color: #007700">) . </span><span style="color: #DD0000">" bytes copiados a remainder.txt\n"</span><span style="color: #007700">;

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.stream-copy-to-stream-notes">
  <h3 class="title">Notas</h3>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="simpara">
    Cuando <code class="parameter">from</code> 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 <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, aunque los datos leídos hasta ese
    momento ya se hayan escrito en <code class="parameter">to</code>.
    Este tiempo límite es por omisión
    <a href="filesystem.configuration.php#ini.default-socket-timeout" class="link">default_socket_timeout</a>
    y puede cambiarse con <span class="function"><a href="function.stream-set-timeout.php" class="function">stream_set_timeout()</a></span>.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.stream-copy-to-stream-seealso">
  <h3 class="title">Véase también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.copy.php" class="function" rel="rdfs-seeAlso">copy()</a> - Copia un fichero</span></li>
   </ul>
  </p>
 </div>

</div><?php manual_footer($setup); ?>