stream_get_contents

(PHP 5, PHP 7)

stream_get_contentsЧитает оставшуюся часть потока в строку

Описание

string stream_get_contents ( resource $handle [, int $maxlength = -1 [, int $offset = -1 ]] )

Похожа на функцию file_get_contents(), за исключением того, что stream_get_contents() работает с уже открытым ресурсом потока и возвращает оставшуюся часть содержимого в строку размером до maxlength байт и начиная с указанного смещения offset.

Список параметров

handle (resource)

Ресурс потока (например, полученный при помощи функции fopen())

maxlength (integer)

Максимальное количество байт для чтения. По умолчанию -1 (прочитать весь оставшийся буфер).

offset (integer)

Перейти к указанному смещению перед чтением. Если это число отрицательное, то переход не произойдёт и чтение начнётся с текущей позиции.

Возвращаемые значения

Возвращает строку или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.1.0 Был добавлен параметр offset.

Примеры

Пример #1 Пример использования stream_get_contents()

<?php

if ($stream fopen('http://www.example.com''r')) {
    
// вывести всю страницу начиная со смещения 10
    
echo stream_get_contents($stream, -110);

    
fclose($stream);
}


if (
$stream fopen('http://www.example.net''r')) {
    
// вывести первые 5 байт
    
echo stream_get_contents($stream5);

    
fclose($stream);
}

?>

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • fgets() - Читает строку из файла
  • fread() - Бинарно-безопасное чтение файла
  • fpassthru() - Выводит все оставшиеся данные из файлового указателя

Коментарии

Автор:
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.
2011-01-20 15:53:32
http://php5.kiev.ua/manual/ru/function.stream-get-contents.html
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
2011-12-17 21:12:00
http://php5.kiev.ua/manual/ru/function.stream-get-contents.html

    Поддержать сайт на родительском проекте КГБ