Как максимально быстро на PHP скопировать файл?

Как максимально быстро (и без лишней нагрузки) на PHP скопировать файл с сдругого сервера? точнее какой функцией. Обычно пользовался чем придется, а сейчас на проекте каждая миллисекунда дорога. Copy или file_put_contents или есть другие варианты?
  • Вопрос задан
  • 480 просмотров
Пригласить эксперта
Ответы на вопрос 5
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
дорога каждая миллисекунда, но при этом время работы вашего скрипта зависит от удаленного ресурса? странная какая-то архитектура. быстрее http сompression не будет ничего.
Ответ написан
Комментировать
@Starche
Python/JS/PHP Tech Lead
file_put_contents($file, fopen($url, 'r'));
Идея в том, что fopen создаёт поток, и этот поток передаётся в file_put_contents. Соответственно этот поток не считывается в память весь, а буферизуется и сбрасывается на диск по мере вычитывания. См. https://php.net/file_put_contents
Если data является потоковым ресурсом (stream), оставшийся буфер этого потока будет скопирован в указанный файл.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Через exec запустите что-то внешнее, типа curl или rsync, пусть они этим занимаются.
Еесли другой сервер доступен не только по http, то еще можно посмотреть в сторону сетевых ФС, может и копировать ничего не придется.
Ответ написан
Комментировать
@grinat
Через exec, на php вообще не будет нагрузки.
Ответ написан
Комментировать
@nrgian
на PHP скопировать файл с сдругого сервера?

Основная потеря времени идет на сети и на том другом сервер (если он медленный) - и от вас и вашего PHP тут ничего не зависит.

Если хочется разгрузить ваш скрипт, то просто назначать фоновые задания, которые будет выполнятся по cron или т.п. В этом случае ваш скрипт "заказавший" файл будет вообще не нагружен.

В противном случае - тормозить будет, но не не зависящим от вас причинам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы