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