mirror of
https://github.com/php/doc-ru.git
synced 2025-08-15 23:42:35 +00:00
225 lines
7.6 KiB
XML
225 lines
7.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: ae5b5761e220b355014d0845e060ea1669befe7a Maintainer: shein Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<refentry xml:id="function.fread" xmlns="http://docbook.org/ns/docbook">
|
||
<refnamediv>
|
||
<refname>fread</refname>
|
||
<refpurpose>Бинарно-безопасное чтение файла</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type class="union"><type>string</type><type>false</type></type><methodname>fread</methodname>
|
||
<methodparam><type>resource</type><parameter>stream</parameter></methodparam>
|
||
<methodparam><type>int</type><parameter>length</parameter></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
<function>fread</function> читает до
|
||
<parameter>length</parameter> байт из файлового указателя
|
||
<parameter>stream</parameter> и смещает указатель. Чтение останавливается как только
|
||
было достигнуто одно из следующих условий:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
было прочитано <parameter>length</parameter> байт
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
достигнут EOF (конец файла)
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
стал доступен пакет или истекло <link linkend="function.socket-set-timeout">
|
||
время ожидания сокета</link> (для сетевых потоков)
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
если читаемый поток является буферизованным и не представляет
|
||
собой обычный файл, то за один раз максимум читается
|
||
количество байт, равное размеру одной порции данных (обычно это 8192),
|
||
однако, в зависимости от ранее буферизованных данных размер возвращаемых
|
||
данных может быть больше размера одной порции данных.
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>stream</parameter></term>
|
||
<listitem>
|
||
&fs.file.pointer;
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>length</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
<parameter>length</parameter> указывает размер прочитанных данных
|
||
в байтах.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
Возвращает прочтённую строку&return.falseforfailure;.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>Простой пример использования <function>fread</function></title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// получает содержимое файла в строку
|
||
$filename = "/usr/local/something.txt";
|
||
$handle = fopen($filename, "r");
|
||
$contents = fread($handle, filesize($filename));
|
||
fclose($handle);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Пример бинарного чтения с помощью <function>fread</function></title>
|
||
<warning>
|
||
<para>
|
||
На системах, которые различают бинарные и текстовые файлы
|
||
(к примеру, Windows), файл должен быть открыт с использованием
|
||
флага 'b' в параметре mode функции <function>fopen</function>.
|
||
</para>
|
||
</warning>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$filename = "c:\\files\\somepic.gif";
|
||
$handle = fopen($filename, "rb");
|
||
$contents = fread($handle, filesize($filename));
|
||
fclose($handle);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Примеры удалённого чтения с помощью <function>fread</function></title>
|
||
<warning>
|
||
<para>
|
||
При чтении чего-либо отличного от локальных файлов, например
|
||
потоков, возвращаемых при чтении
|
||
<link linkend="features.remote-files">удалённых файлов</link> или из
|
||
<function>popen</function> и <function>fsockopen</function>, чтение
|
||
остановится после того, как пакет станет доступным. Это означает, что
|
||
вы должны собирать данные вместе по кусочкам, как показано на примере
|
||
ниже.
|
||
</para>
|
||
</warning>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$handle = fopen("http://www.example.com/", "rb");
|
||
$contents = stream_get_contents($handle);
|
||
fclose($handle);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$handle = fopen("http://www.example.com/", "rb");
|
||
if (FALSE === $handle) {
|
||
exit("Не удалось открыть поток по url адресу");
|
||
}
|
||
|
||
$contents = '';
|
||
|
||
while (!feof($handle)) {
|
||
$contents .= fread($handle, 8192);
|
||
}
|
||
fclose($handle);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
<note>
|
||
<para>
|
||
Если вы просто хотите получить содержимое файла в виде строки,
|
||
используйте <function>file_get_contents</function>, так как
|
||
эта функция намного производительнее, чем код описанный выше.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Учтите, что <function>fread</function> читает, начиная с текущей
|
||
позиции файлового указателя. Используйте функцию <function>ftell</function>
|
||
для нахождения текущей позиции указателя и функцию <function>rewind</function>
|
||
для перемотки позиции указателя в начало.
|
||
</para>
|
||
</note>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>fwrite</function></member>
|
||
<member><function>fopen</function></member>
|
||
<member><function>fsockopen</function></member>
|
||
<member><function>popen</function></member>
|
||
<member><function>fgets</function></member>
|
||
<member><function>fgetss</function></member>
|
||
<member><function>fscanf</function></member>
|
||
<member><function>file</function></member>
|
||
<member><function>fpassthru</function></member>
|
||
<member><function>fseek</function></member>
|
||
<member><function>ftell</function></member>
|
||
<member><function>rewind</function></member>
|
||
<member><function>unpack</function></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
</refentry><!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|