| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Отдача файлов скриптом и напрямую |
| Автор: Greendrake 19.7.2006, 17:59 | ||
| В корне сервера имеем файл 1.txt со всякой лабудой на несколько десятков кило. Также имеем файл 1.php следующего содержания:
Вопрос: в чём будет заключаться отличие в ответах сервера при запросе 1.txt и 1.php ? В браузере отличий, понятное дело, нет, однако их чувствует программа 1С. В случае 1.php она обрезает (или недополучает) ответ, получив около 1 кб |
| Автор: PARROT 19.7.2006, 18:24 | ||
В вашем коде лишняя ; |
| Автор: Greendrake 19.7.2006, 20:27 |
| PARROT, не понял к чему приведённый вами код. Он заносит содержимое 1.php в конец 1.txt - как это относится к сабжу? |
| Автор: Greendrake 19.7.2006, 21:50 | ||
Я просто хочу чтобы скрипт тупо прочитал и выдал содержимое txt-файла. Но на этом мои желания не заканчиваются. Ещё я хочу, чтобы клиент не мог догадаться, что ему подсунул сервер - собственно текстовый файл, или его же содержимое, выданное скриптом. Предыстория вопроса: Обнаружено, что программа 1С при при обращениях к сайтам в одних случаях получает страницы полностью, а в других - обрезанные. При этом браузеры получают страницы целиком всегда. С целью докопаться до причин, был поставлен следственный эксперимент, о котором здесь и идёт речь. Программа 1С получает содержимое файла txt при его прямом запросе - целиком и полностью, а при запросе скрипта - не полностью. Хотя браузеры выдают идентичное содержимое при запросе и того и другого. Кстати, на различия в URLах - .php или .txt на конце можно не грешить, это я уже проверял с помощью mod_rewrite, подсунув скрипт по запросу txt. Результат не отличался от запроса php, т. е. был обрезанным в 1C. Походу, тут ничего не остаётся кроме как побайтно сверять ответ сервера со всеми заголовками в обоих случаях - txt и php. Вот ответы, которые удалось подсмотреть с помощью анализатора трафика: Ответ на запрос текстового файла ![]() Ответ на запрос скрипта, тупо выдающего содержимое текстового файла ![]() Что бросается в глаза? Во-первых, у ответа на запрос txt указана длина - Content-Length. Во вторых, ответ на запос скрипта выдан в неком chunked формате - что это такое и как с этим бороться? Короче, теперь вопрос стоит так: Как нужно изменить php-скрипт, чтобы его ответ был таким же как у txt? Добавлено @ 22:03 Короче, я так подозреваю, нужно просто ставить заголовок Content-Length с длиной файла. Вот тут у чувака похожая трабла была http://ru.php.net/header#50948 Заврта попробую. |
| Автор: szz 20.7.2006, 05:45 | ||||
Это как бы законсервированный способ передачи. Файл выдается по кусочкам (размер текущего кусочка указан в хедере Chunk size: xxx octets). Браузер после получения этого кусочка должен запросить новый и так до конца - это делается чтоб юзер видел постепенно загружающийся файл, а не ждал пока все-все подгрузится, а потом отобразится (или для долгоиграющих файлов, вроде видео или аудио потоков) Бороться с этим так: поставить длину (верно мыслишь) и
У меня MDM Zinc тоже грузил только первый чанк - поставив 7bit и длину - я все исправил. |
| Автор: Greendrake 20.7.2006, 08:45 | ||
Всё, вот рабочее решение
|
| Автор: szz 20.7.2006, 15:33 |
| Что-ж, значит 1C поумнее Zinca будет ))) |