PHP-функция fwrite()

Применение

PHP fwrite() используется для записи строки в открытый файловый поток handle в бинарно-безопасном формате. Поэтому можно использовать эту функцию для записи в открытый файл.

Синтаксис:

int fwrite ( resource $handle , string $string [, int $length ] )

Пример применения функции fwrite():

<?php
$file = fopen("poem.txt","w");

// Output — 23
echo fwrite($file,"Wrote it over the Peom!");

fclose($file);
?>

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

Функция возвращает количество записанных байтов или значение FALSE (в случае ошибки).

Дополнительная информация

Действие функции завершается в конце файла или при достижении определённой длины.

Версии и история изменений PHP

Функция fwrite() доступна в версиях PHP 4, 5 и 7.

Связанные функции

Связанные с fwrite PHP функции, о которых следует знать:

fread() - производит бинарно-безопасное чтение файла;
fopen() - открывает файл или URL;
fsockopen() - открывает соединение с сокетом или доменным сокетом Unix;
popen() - открывает файловый указатель процесса;
file_get_contents() - считывает файл в строку;
pack() - упаковывает данные в бинарную строку.

Параметры

handle

Указатель файловой системы, который обычно создается при помощи функции fopen(). Параметр указывает на открытый файл, в который нужно произвести запись. Это обязательный параметр.

string

Параметр string используется для указания записываемой строки. Это обязательный параметр.

length

Параметр length используется для указания максимального количества записываемых байт. Если параметр length задан, то запись прекратится при достижении заданного количества байт или при окончании строки. Это необязательный параметр.

fwrite PHP пример:

<?php
$filename = 'poem.txt';
$somecontent = "Add this to the filen";

if (is_writable($filename)) {
    if (!$handle = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";
    fclose($handle);
} else {
    echo "The file $filename is not writable";
}
?>

Дополнительные советы

Функция возвращает значение FALSE только в том случае, если вы ввели неверные аргументы. При любой другой ошибке возвратное значение меньше strlen($string), которым в большинстве случаев является 0. Зацикливание повторных вызовов функции fwrite() будет происходить до тех пор, пока не будет достигнуто нужное число записываемых байт или ожидание возврата значения FALSE при разорванном соединении приведут к бесконечному циклу. Вы должны проверить возвратное значение fwrite PHP и либо немедленно отменить операцию, либо указать максимальное количество повторных попыток.

Ниже приведён пример из документации. Это плохой код, так как broken pipe приведет к бесконечному зацикливанию функции fwrite() с возвратным значением 0. Цикл прерывается только при возврате функцией fwrite() значения false или успешной записи всех байт. В случае возникновения ошибки вы получите бесконечный цикл.

<?php
// BROKEN function - infinite loop when fwrite() returns 0s
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;
}
?>

Валентин Сейидовавтор-переводчик статьи «PHP fwrite() Function»

Пожалуйста, опубликуйте свои комментарии по текущей теме статьи. За комментарии, подписки, дизлайки, лайки, отклики низкий вам поклон!