Скачать один файл с несколькими соединениями (PHP)

Можно ли загрузить один файл с несколькими параллельными соединениями через php?


person InsaneDev    schedule 24.05.2010    source источник
comment
да, как-то можно, но есть решения НАМНОГО более эффективные, чем PHP. И я боюсь, что вам придется реализовать решение самостоятельно, чего, как я подозреваю, вы не просите.   -  person Your Common Sense    schedule 24.05.2010


Ответы (3)


Насколько я знаю не легко, нет.

Вам нужно будет создать PHP-реализацию любых протоколов или дополнений к протоколу HTTP, чтобы разрешить загрузку файлов через несколько соединений.

Хотя это может быть не невозможно, я никогда не слышал о такой реализации, и даже если она существует, само собой разумеется, что это было бы ужасным истощением ресурсов на стороне сервера, чтобы сделать это в PHP.

Я рекомендую вам искать решения на стороне сервера для этого (например, модули и настройки Apache).

person Pekka    schedule 24.05.2010

Не только через PHP. Вы можете сделать это, используя некоторые компоненты на стороне клиента (возможно, даже javascript), но я подозреваю, что это будет много работы. Многие компании, распространяющие программное обеспечение, вместо того, чтобы загружать установщики через HTTP, предоставляют небольшой исполняемый файл с пользовательским интерфейсом, который затем загружает файл со всеми возможными оптимизациями. Может быть, вы могли бы пойти по этому пути?

person Palantir    schedule 24.05.2010

Вы можете использовать расширение PHP http. Он имеет параметр диапазона для запросов и может ожидать входящие данные запроса в фоновом режиме (открытие нескольких сокетных соединений, вызовы неблокирующих функций). Я даже видел где-то упомянутые обратные вызовы. И вы хотите изучить HttpRequestPool. Однако не спрашивайте меня о примерах. Если это так важно для вашего случая, вы должны написать логику обработки самостоятельно.
Или просто погуглить: Параллельные HTTP-запросы в PHP с использованием HTTP-классов PECL [Ответ: класс HttpRequestPool]

person mario    schedule 24.05.2010