PHP fopen: переносятся ли данные через промежуточный сервер? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть вопрос о функции PHP fopen () (с использованием "php: // output").Сервер A использует эту функцию fopen () для потоковой передачи файла с сервера B на компьютер пользователя (у меня есть все необходимые функции header (), настроенные для принудительной загрузки).У меня вопрос: будет ли файл передаваться с по на сервер А, следовательно, с использованием ресурсов полосы пропускания сервера А?Или будет использоваться только пропускная способность сервера B?Я хочу, чтобы потоковый файл не использовал ресурсы полосы пропускания Сервера A, только Сервер B.Спасибо за помощь!

Ответы [ 3 ]

4 голосов
/ 28 декабря 2011

Сервер B будет использовать пропускную способность загрузки (для отправки файла на сервер A).
Сервер A будет использовать пропускную способность загрузки (для получения файла с сервера A) и загрузку полосы пропускания (для отправки файла пользователю).

Если у вас есть сервер A и сервер B, они выделены и предоставляются одной и той же хостинговой компанией, они обычно позволяют купить внутренний коммутатор, который соединит эти две машины в одной внутренней сети.Таким образом, ресурсы серверов все еще будут использоваться, но вы не будете платить за внутренние передачи.

Имейте в виду, что при передаче данных с одного компьютера на другой всегда будет использоваться пропускная способность.Это только вопрос, платить больше или нет.

1 голос
/ 28 декабря 2011

Возможно, я неправильно понимаю, но не будет ли это всегда использовать оба, если это отдельные машины? Один сервер имеет файл и поэтому должен использовать потребляемую «повышенную» пропускную способность, а другой должен загрузить файл и, следовательно, использовать «пониженную» пропускную способность. Если сервер A продолжит загрузку файла на клиент, тогда будет затронут только сервер A, но он уже наложил затраты на пропускную способность для обеих машин ... так для файла 1 МБ:

Сервер A: 1 МБ вниз + 1 МБ вверх Сервер B: 1 МБ вверх

1 голос
/ 28 декабря 2011

Сервер А будет использоваться. fopen() работает полностью на стороне сервера и доставляет результат клиенту, поэтому клиент ничего не будет знать о сервере B.

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

...