PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

stream_get_filters> <stream_filter_remove
Last updated: Fri, 22 Aug 2008

view this page in

stream_get_contents

(PHP 5)

stream_get_contentsLee el resto de una secuencia en una cadena

Descripción

string stream_get_contents ( resource $gestor [, int $longitud_maxima [, int $offset ]] )

Función idéntica a file_get_contents(), excepto que stream_get_contents() opera en un recurso de secuencia ya abierto y devuelve el contenido restante en una cadena, hasta un máximo de longitud_maxima bytes y comenzando en el desplazamiento indicado.

Lista de parámetros

gestor (resource)

Un recurso de secuencia (p.ej. devuelto por fopen())

longitud_maxima (integer)

La cantidad máxima de bytes a leer. Su valor predeterminado es -1 (leer todo el resto del búfer).

desplazamiento (integer)

Buscar el desplazamiento especificado antes de leer. Agregado en PHP 5.1.0.

Valores retornados

Devuelve una cadena, o FALSE si ocurre un error.

Ejemplos

Example #1 Ejemplo de stream_get_contents()

<?php

if ($secuencia fopen('http://www.example.com''r')) {
    
// imprimir toda la pagina comenzando en la posicion 10
    
echo stream_get_contents($secuencia, -110);

    
fclose($secuencia);
}


if (
$secuencia fopen('http://www.example.net''r')) {
    
// imprimir los primeros 5 bytes
    
echo stream_get_contents($secuencia5);

    
fclose($secuencia);
}

?>

Ver también

Note: Esta función es segura binariamente.



add a note add a note User Contributed Notes
stream_get_contents
finalmau at gmail dot com
30-Apr-2008 01:28
some times this functions cause an max execution time time error, Why?

Simple, if you use it the function wait for have the specified byte  length into the resource or the end of file, but, several times this not happend, so we need implement an artificial flag like this:

$tmp = stream_get_contents($this->socket, 42);
while($tmp[42] != 'N'){

//Your code...

$tmp = stream_get_contents($this->socket, 42);
}
Jim Keller
28-Aug-2006 10:04
Per wez (at php.net), "the trick is to tell the recipient how big the packet is, so that it can read the correct length."

In my own experience, when using PHP streams to send data bursts, the "max length" parameter seems to act more as an exact length parameter, as the stream will block indefinitely until max length is reached or until the other side fcloses() the stream. The latter is ok unless you need to keep the stream open to continue communication, in which case you have to let the receiving end know how much data to expect, or it will block indefinitely if the max length of data is not sent. You need to pack() and prepend the length of the outgoing data stream in the first 4 bytes of the packet, as follows:

function send_pkt($stream, $my_data)
{

   $len = strlen($my_data);

   $send_data = pack('N', $len) . $my_data; //Pack the length in a network-friendly way, then prepend it to the data.

   $final_len = strlen($send_data);

   if ( fwrite($stream, $send_data) < $final_len ) {
                   //something went wrong, trigger error
   }
}

function recv_pkt($stream)
{

   $packed_len = stream_get_contents($stream, 4); //The first 4 bytes contain our N-packed length
   $hdr = unpack('Nlen', $packed_len);
   $len = $hdr['len'];
   $recvd_data = stream_get_contents($stream, $len);

   return $recvd_data;

}

stream_get_filters> <stream_filter_remove
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites