Начиная с PHP 5.1.0, file_put_contents()
поддерживает запись по частям путем передачи дескриптора потока в качестве параметра $data
:
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
From руководство:
Если data [это второй аргумент] является ресурсом потока, оставшийся буфер этого потока будет скопирован в указанный файл. Это похоже на использование
blockquote>stream_copy_to_stream()
.(Спасибо Hakre .)
Сделайте POST, так как его цель - вызвать побочный эффект на стороне сервера (в частности, изменить состояние многостраничной формы).
RFC 2616 говорит в разделе 9.1.1 :
В частности, было установлено соглашение, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение выполнения каких-либо действий, кроме извлечения. Эти методы следует считать «безопасными». Это позволяет пользовательским агентам особым образом представлять другие методы, такие как POST, PUT и DELETE, чтобы пользователь был осведомлен о том, что запрашивается возможно небезопасное действие.
Естественно, невозможно гарантировать, что сервер не генерирует побочные эффекты в результате выполнения запроса GET; фактически, некоторые динамические ресурсы считают это функцией. Важным отличием здесь является то, что пользователь не запрашивал побочные эффекты, поэтому не может нести за них ответственность.