Files
php-doc-ru/reference/filesystem/functions/fwrite.xml
2024-02-11 11:24:46 +03:00

241 lines
7.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: bb6247b68128cab1b166b49a3a73a87f40333267 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.fwrite">
<refnamediv>
<refname>fwrite</refname>
<refpurpose>Записывает данные в файл бинарно-безопасным способом</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>fwrite</methodname>
<methodparam><type>resource</type><parameter>stream</parameter></methodparam>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>length</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<simpara>
Функция <function>fwrite</function> записывает содержимое <parameter>data</parameter>
в файловый поток <parameter>stream</parameter>.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>stream</parameter></term>
<listitem>
&fs.file.pointer;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
Строка, которую нужно записать.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
Функция остановит запись через <parameter>length</parameter>
байтов, если значение <parameter>length</parameter> — целое число (&integer;),
или когда достигнет конца строки
<parameter>data</parameter>, в зависимости от того, что произойдёт раньше.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функция <function>fwrite</function> возвращает количество
записанных байтов&return.falseforfailure;.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Функция <function>fwrite</function> выдаёт ошибку
уровня <constant>E_WARNING</constant> в случае ошибки.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>length</parameter> теперь принимает значение &null;.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Простой пример использования функции <function>fwrite</function></title>
<programlisting role="php">
<![CDATA[
<?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";
// Вначале убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
// В примере мы открываем $filename в режиме «записи в конец».
// Поэтому смещение установлено в конец файла и
// значение переменной $somecontent допишется в конец файла при вызове функции fwrite().
if (!$fp = fopen($filename, 'a')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем значение переменной $somecontent в открытый файл.
if (fwrite($fp, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo "Ура! Записали ($somecontent) в файл ($filename)";
fclose($fp);
} else {
echo "Файл $filename недоступен для записи";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Запись в сетевой поток может прекратиться до завершения
записи строки. Значение, которое возвращает функция
<function>fwrite</function>, можно проверить:
<programlisting role="php">
<![CDATA[
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $written;
}
}
return $written;
}
?>
]]>
</programlisting>
</para>
</note>
<note>
<para>
В системах, которые различают двоичные и текстовые файлы (например,
операционные системы Windows), файл должен быть открыт с флагом «b» в конце
аргумента mode функции <function>fopen</function>.
</para>
</note>
<note>
<para>
Если функция <function>fopen</function> открыла дескриптор
<parameter>stream</parameter> в режиме «добавление в конец»,
вызовы функции <function>fwrite</function> будут атомарными (если
размер <parameter>data</parameter> не превышает размер
блока файловой системы, на некоторых платформах, и пока файл хранится
в локальной файловой системе). То есть не нужно блокировать ресурс
функцией <function>flock</function> перед вызовом функции <function>fwrite</function>;
данные будут записаны без прерываний.
</para>
</note>
<note>
<para>
При повторной записи в файловый указатель, данные будут добавлены
в конец файла:
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// Теперь файл 'data.txt' содержит 123, а не 23!
?>
]]>
</programlisting>
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>fread</function></member>
<member><function>fopen</function></member>
<member><function>fsockopen</function></member>
<member><function>popen</function></member>
<member><function>file_get_contents</function></member>
<member><function>pack</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
-->