Перейти к содержимому

fpassthru()

Что такое функция fpassthru()?

Функция fpassthru() — это встроенная функция PHP, которая считывает содержимое файла от текущей позиции указателя файла до конца файла и записывает их напрямую в стандартный поток вывода. Эта функция используется для чтения больших файлов без загрузки их в память.

При успешном выполнении она возвращает количество записанных байтов из данного указателя файла в вывод, или false в случае ошибки.

Ниже приведён базовый синтаксис функции fpassthru():

Синтаксис fpassthru() в PHP

php
fpassthru(file);

Где file — это указатель файла для чтения.

Как использовать функцию fpassthru()?

Использование функции fpassthru() достаточно просто. Следуйте приведённым ниже шагам:

  1. Откройте файл с помощью fopen() и убедитесь, что указатель файла находится в нужной начальной позиции.
  2. Вызовите fpassthru() с указателем файла. Функция будет читать до конца файла (EOF) и записывать данные в поток вывода.
  3. Проверьте возвращаемое значение для подтверждения успеха, затем закройте файл с помощью fclose().

Ниже приведён пример кода, демонстрирующий использование функции fpassthru():

Как использовать функцию fpassthru()?

php
<?php

$filename = 'largefile.txt';
$file = fopen($filename, 'r');
if ($file) {
   if (fpassthru($file) === false) {
      echo "Error reading file!";
   }
   fclose($file);
} else {
   echo "Unable to open file!";
}

В этом примере мы открываем файл largefile.txt с помощью функции fopen() в режиме только для чтения. Мы проверяем, успешно ли открыт файл, используя оператор if, и если да, то выводим содержимое файла в стандартный поток вывода с помощью функции fpassthru(). Мы проверяем возвращаемое значение для обработки возможных ошибок чтения перед закрытием файла с помощью функции fclose().

Примечание о буферизации вывода: Если в PHP активна буферизация вывода (например, через ob_start()), fpassthru() запишет данные напрямую в текущий буфер вывода, а не отправит их сразу в браузер.

Заключение

Функция fpassthru() — это полезный инструмент в PHP для чтения больших файлов без загрузки их в память. Следуя шагам, описанным в этом руководстве, вы сможете легко использовать функцию fpassthru() в своих PHP-проектах для чтения содержимого файлов от текущей позиции указателя и вывода их в стандартный поток вывода.

Практика

Какова цель функции fpassthru() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.