Сохранение больших файлов из php stdin

Посоветуйте мне самый оптимальный способ сохранения больших файлов с php stdin, пожалуйста. Разработчик iOS отправляет мне большой видеоконтент на сервер, и я должен его хранить в файлах.

Я прочитал поток stdin с видеоданными и напишу его в файл. Например, следующим образом:

$handle = fopen("php://input", "rb"); while (!feof($handle)) { $http_raw_post_data .= fread($handle, 8192); } 

Какую функцию лучше использовать? file_get_contents или fread или что-то еще?

    Не используйте file_get_contents потому что он попытается загрузить все содержимое файла в строку

    ОТ PHP DOC

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

    Уверен, вы просто хотите создать файл фильма на своем сервере. Это более эффективный способ

     $in = fopen("php://input", "rb"); $out = fopen('largefile.dat', 'w'); while ( ! feof($in) ) { fwrite($out, fread($in, 8192)); } 

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

     $handle = fopen("php://input", "rb"); if (false === file_put_contents("outputfile.dat", $handle)) { // handle error } fclose($handle); 

    Это чище, чем итерация через файл, и это может быть быстрее (я не тестировал).

    Если вы используете nginx в качестве веб-сервера, я хочу рекомендовать модуль загрузки nginx с возможностью возобновления загрузки.