PHP использует fwrite и fread с входным потоком

Я ищу наиболее эффективный способ записи содержимого входного потока PHP на диск без использования значительной части памяти, предоставленной PHP-скрипту. Например, если максимальный размер загружаемого файла составляет 1 ГБ, а PHP имеет только 32 МБ памяти.

define('MAX_FILE_LEN', 1073741824); // 1 GB in bytes
$hSource = fopen('php://input', 'r');
$hDest = fopen(UPLOADS_DIR.'/'.$MyTempName.'.tmp', 'w');
fwrite($hDest, fread($hSource, MAX_FILE_LEN));
fclose($hDest);
fclose($hSource);

Означает ли fread внутри fwrite, как показано в приведенном выше коде, что весь файл будет загружен в память?

Для обратного действия (запись файла в выходной поток) PHP предлагает функцию с именем fpassthru, которая, как я полагаю, не хранит содержимое файла в PHP-скрипте. объем памяти.

Я ищу нечто подобное, но в обратном порядке (запись из входного потока в файл). Спасибо за любую помощь, которую вы можете оказать.

5
задан Lakey 7 March 2012 в 03:58
поделиться