- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте уважаемые форумчане. Задача которую я пытаюсь решить выглядит примерно так:
Имеется файл размер которого изменяется с течением времяни(увеличивается).
Мы отправляем пользователю ссылку на первые 500 килобайт файла и догружаем остальное(таким образом ускоряется работа скрипта и уменьшается время ожидания пользователя).
То есть сначала загружается первая часть файла размером 500 килобайт и передается урл на эту часть. Потом размер файла меняется(он догружается fopen($file,"a+b")). Но у пользователя полуачется скачать только 500 кб, хотя ко времяни когда скачивание завершается размер файла увеличивается минимум в 2 раза.
Пробовал делать так:
Изначально мы знаем размер загружаемого файла - его размер $size
Но не смотря на то что этот размер мы и передаем в заголовках - скачиваются только первые 500кб((
Подскажите что делать, пожалуйста. Возможно кто-то уже сталкивался с такой проблеммой.
Что мешает отдавать пользователю непрерывно по 500К без всяких извращений?
Что мешает отдавать пользователю непрерывно по 500К без всяких извращений?
и как потом пользователь это все во едино соберет?) допустим будет 3 скачки по 500 килобайт хД) Ну да так то я могу))
Представьте вы скачиваете с сайта 3 части одного! файла и пытаетесь их собрать хДД
Руками))
и как потом пользователь это все во едино соберет?) допустим будет 3 скачки по 500 килобайт хД)
aftamat4ik, либо это 3 скачки по 500К либо это одна скачка по 500К, вы уж определитесь.
Представьте вы скачиваете с сайта 3 части одного! файла и пытаетесь их собрать хДД
Склеить части задача для школьника, но вопрос в другом, что мешает отдавать в трех "пакетах" по 500К в один файл?
В общем как объяснить броузеру что для скачивания следующей части файла надо перейти по такому-то адресу(по тому-же самому) и что передадут с этого адреса прибавить к тому что уже скачано.... ППЦ хД
---------- Добавлено 26.02.2013 в 15:26 ----------
Склеить части задача для школьника, но вопрос в другом, что мешает отдавать в трех "пакетах" по 500К в один файл?
Так так так, а по подробнее)
http://ru.wikipedia.org/wiki/Chunked_transfer_encoding
хм. В общем-то советы хорошие. но вся проблема в том что я использую рекурсию и файл нельзя скажем так сразу-же запихнуть в цикл и разобрать по частям(time-limit, именно из-за него и применена рекурсия) Вот код самой функции(это druplal 7)
---------- Добавлено 26.02.2013 в 20:59 ----------
Тут хорошая функция закачки файла блоками - http://stackoverflow.com/questions/6914912/streaming-a-large-file-using-php
Которая тоже не канает из-за рекурсии(
Сам механизм Chunked transfer encoding мне не до конца ясен. Я пытался сделать так(по этому совету - http://stackoverflow.com/questions/13565952/transfer-encoding-chunked-header-in-php-what-is-padding-for):
После этого при переходе на урл http://test1.ru/somefile.php начиналось скачивание файла и хотя размер файла изменился минимум 2 раза к концу закачки, скачалось всего 500кб. Что я не так делаю то?
Ну не могу я файл разбить на части как здесь(ссылка откуда взят код - выше):
while (!feof($fp)) {
echo fgets($fp, 128);
}
- не применимо! можно сделать так:
if(!eof($fp)) echo fgets($fp, 128);
но это не приводит к скачке полного файла
И опять-же сокеты мне что-то не по нраву.