- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Уважаемые форумчане. Я пытаюсь в меру своих малых сил написать скрипт скачивания файла с удаленного сервера по частям. То есть сначала скачиваются 500кб, потом еще 500кб и так далее до конца файла... Для этого был написан вполне себе нормально работающий кусок кода:
Файл скачивается, но! когда я пытаюсь его воспроизвести в flash плеере, то проигрываются только первые 500кб, хотя тот-же AIMP или winamp проигрывают файл полностью.
Если загружать файл не пакетами а целиком, то есть так
то flash player все нормально воспринимает. Объясните пожалуйста, почему первый код не работает как надо и почему flash плеер не хочет проигрывать музыку скачанную через такой алгоритм, хотя все остальные плееры его нормально воспроизводят?
Сравните между собой скаченный файл целиком и файл скаченный частями, можете побайтово.
http://habrahabr.ru/post/138504/
Вполне может быть в этом проблема:
$fp = fopen ($name, 'ab');//ab - добавляет данные к концу файла
плееры могут пренебрегать этим, а флееш нет.
Попробуйте вместо этого file_put_contents это как бы уже давно современный вариант :)
плееры могут пренебрегать этим, а флееш нет.
чем это пренебрегать то? Я могу написать выражение для очистки от ненужных символов внутренности файла. Только вот какой символ заставляет flashplayer остановитсья? EOF? Но ведь ни fclose ни curl_setopt($ch, CURLOPT_FILE, $fp); в конце записи данных символ EOF в поток не помещают, во всяком случае про это нигде не написано. Так в чем загвоздка то? о_0
Ну Вам же сказали вроде.
Частями выкачайте файл и сохраните на сервере, а потом к себе на комп.
Также скачайте через браузер этот файл. Сравните размеры. В плеере также посмотрите длительность обоих файлов. Вообщем провести сравнение! О результатах расскажите.
ЗЫ. коммент "+1 ибо округлению я не доверяю" просто убил😂
прочитал ваше извращение с курлом в цикле)) не совсем понял что вы имели ввиду по частям.
у меня была похожая задача, реализовывал отдачу mp3 файлов "налету" с контакта через свой сервер.
код не стал вставлять в сообщение, тут более читабельно:
http://pastebin.com/43VMsArf
надеюсь помог
Код уг от того и
Код
Код пойдет) Но ничем от моего варианта практически не отличается, за исключением проверки. Результат тот же самый - Файл не проигрывается полностью, проигрываются только первые 20-30 секунд, что весьма странно. Может есть какой-то особый символ, который говорит флеш плееру - стоп?
Сравнивал скачанный файл и слепленный файл побайтово. И знаете что меня убило?
Размер слепленного файла - 3,67 МБ (3 854 426 байт)
Размер скачанного! файла - 3,75 МБ (3 936 951 байт)
То есть слепленный весит меньше! скачанного. Вот такого я точно не ожидал. Сравнивал на разных файлах, всегда размер слепленного меньше размера скачанного... Странно.
Кто-нибудь это может понять?
Я сам себе это объяснить не способен, если честно....
andygood, что-то ваш вариант не работает, хотя все равно спасибо что попробовали. Пишет 405 ошибку - not Allowed, жаль(
-1, не?
Если 10 байт с 0 то 0-9
ЗЫ. коммент "+1 ибо округлению я не доверяю" просто убил
ну.. про floor/ceil, видимо не в курсе..
То есть слепленный весит меньше! скачанного.
Разбираться, почему.. на разных файлах разный размер.
Почему в килобайтах? И что за функция? почему не http://php.net/manual/pt_BR/function.curl-getinfo.php ?
512001 байт отличается от оригинального, повторяется байт с позиции 512000, так что ivan-lev прав - капайте в сторону правлильного Range: bytes. Ну и конечно нормальный цикл сделайте, выше привели вариант "практически ничем ни отличающийся".
512001 байт отличается от оригинального,
512000, похоже, лечится исправлением на 2.. видимо, поправки на +1 оказалось недостаточно 😂