(PHP 4, PHP 5, PHP 7)
fwrite — Бинарно-безопасная запись в файл
$handle
, string $string
[, int $length
] )
fwrite() записывает содержимое string
в файловый поток handle
.
handle
Указатель (resource) на файл, обычно создаваемый с помощью функции fopen().
string
Записываемая строка.
length
Если передан аргумент length
, запись
остановится после того, как length
байтов будут записаны или будет достигнут конец строки
string
, смотря что произойдёт раньше.
Учтите, что если указан аргумент length
,
то директива magic_quotes_runtime
будет проигнорирована, и строка string
не будет
очищена от слешей.
fwrite() возвращает количество записанных байт
или FALSE
в случае ошибки.
Замечание:
Запись в сетевой поток может прекратиться до того, как будут записаны все данные. Это можно контролировать с помощью проверки возвращаемого значения функции fwrite():
<?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;
}
?>
Замечание:
В системах, различающих двоичные и текстовые файлы (к примеру, Windows), файл должен быть открыт используя флаг 'b' в конце аргумента mode функции fopen().
Замечание:
Если дескриптор
handle
был открыт функцией fopen() в режиме "добавление в конец", то вызовы fwrite() будут атомарными (за исключением случая, если размерstring
превысит размер блока файловой системы, на некоторых платформах, и пока файл хранится на локальной файловой системе). Т.е. нет необходимости блокировать ресурс с помощью flock() перед вызовом fwrite(), и все данные будут записаны без прерываний.
Замечание:
При повторной записи в файловый указатель, данные будут добавлены в конец содержимого файла:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// содержимое 'data.txt' теперь 123, а не 23!
?>
Пример #1 Простой пример использования fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";
// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
// В нашем примере мы открываем $filename в режиме "записи в конец".
// Таким образом, смещение установлено в конец файла и
// наш $somecontent допишется в конец при использовании fwrite().
if (!$handle = fopen($filename, 'a')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем $somecontent в наш открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo "Ура! Записали ($somecontent) в файл ($filename)";
fclose($handle);
} else {
echo "Файл $filename недоступен для записи";
}
?>