Я тестировал YouTube API v3, загружая видеофайлы, существующие на моем сервере Apache (VPS, работающий под CENTOS 6.7 x86_64 на Virtuozzo, RAM 2 ГБ и тонну процессора), используя предоставленный возобновляемый сценарий загрузки.
Пробовав всю усадьбу вещей, максимальная скорость загрузки, которую я смог достичь, составляет не более 120 КБ/с.
Я играл с выходными буферами, отключая GZipping, изменяя размеры блоков (от 1 до 30 МБ) и проверяя скорость полосы пропускания сервера (последовательно более 250 Мбит/с в направлении загрузки).
Мне трудно верить, учитывая, как быстро вы можете загружать через браузер (я не могу проверить эту теорию прямо сейчас, поскольку я нахожусь на очень медленном интернет-соединении, но это основано на прошлом опыте), что это ограничение YouTube, если это не преднамеренное дросселирование. Я не могу найти документацию о ожидаемых скоростях через API в документах YouTube или в любом месте в Интернете.
Кто-нибудь еще сталкивался с медленными загрузками и есть ли что-нибудь, что можно сделать? Заранее спасибо.
Сделав немного больше тестов, я пришел к выводу, что медленные скорости вызваны не из-за дросселирования на YouTube, а в рамках основной инфраструктуры самого PHP. Тем не менее, мне удалось увеличить скорость с помощью PHP от ~ 120 КБ/с до ~ 770 КБ/с, изменив подход Google к примеру, используя stream_get_contents
вместо fread
(кредит на этот пост).
Однако, если вам все еще нужно больше, я бы предложил перейти к подходу Python. Через API я загрузил 2 ГБ файл за 83 секунды, который выходит на ~ 24 МБ/с. Было бы интересно узнать основные причины программирования из-за резких различий скоростей, если кто-нибудь знает, хотя и из моего царства, которое я бы спешил добавить.