PHP 8.1.31 Released!

stream_get_contents

(PHP 5, PHP 7, PHP 8)

stream_get_contentsLê o restante de um fluxo em uma string

Descrição

stream_get_contents(resource $stream, ?int $length = null, int $offset = -1): string|false

Idêntico a file_get_contents(), exceto que stream_get_contents() opera em um recurso de fluxo já aberto e retorna o conteúdo remanescente em uma string, até o número de bytes definido em length e iniciando na posição offset especificada.

Parâmetros

stream (resource)

Um recurso de fluxo (ex.: retornado de fopen())

length (int)

O máximo de bytes para leitura. O padrão é null (ler todo o buffer remanescente).

offset (int)

Posiciona o ponteiro até o deslocamento especificado antes da leitura. Se o número for negativo, não irá ocorrer deslocamento e a leitura irá iniciar na posição atual.

Valor Retornado

Retorna uma string ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.0.0 length agora pode ser nulo.

Exemplos

Exemplo #1 Exemplo de stream_get_contents()

<?php

if ($stream = fopen('http://www.example.com', 'r')) {
// mostra toda a página iniciando na posição 10
echo stream_get_contents($stream, -1, 10);

fclose($stream);
}


if (
$stream = fopen('http://www.example.net', 'r')) {
// mostra os 5 primeiros bytes
echo stream_get_contents($stream, 5);

fclose($stream);
}

?>

Notas

Nota: Esta função é compatível com dados binários.

Nota:

Ao especificar um valor de length diferente de null, esta função irá imediatamente alocar um buffer interno deste tamanho, mesmo que o conteúdo real seja significativamente menor.

Veja Também

  • fgets() - Lê uma linha de um ponteiro de arquivo
  • fread() - Leitura de arquivo segura para binário
  • fpassthru() - Imprime todo os dados restantes de um ponteiro de arquivo

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
12
clarck dot smith at gmail dot com
12 years ago
In that case when stream_get_contents/fread/fgets or other stream reading functions block indefinitely your script because they don't reached the limit of bytes to read use the socket_get_meta_data function to figure out the number of the bytes to read. It returns an array that contains a key named 'unread_bytes' and then pass that number to your favourite stream reading functions second parameter to read from the stream.

Maybe a good workaround to use the stream_select function, and set the socket to non-blocking mode with the use of stream_set_blocking($stream, 0). In this case the socket reading functions work properly.

Cheers, Ervin
up
4
m rahman
13 years ago
When omitting the parameter $maxlength, any received bytes are stacked up until the underlying stream is not readable anymore, the the function returns that stack in one piece.
To Top