Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отдача файлов скриптом и напрямую, различия в ответах сервера 
V
    Опции темы
Greendrake
Дата 19.7.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: нет
Всего: 6



В корне сервера имеем файл 1.txt со всякой лабудой на несколько десятков кило.
Также имеем файл 1.php следующего содержания:
Код

<?
header('Content-Type: text/plain; charset=windows-1251');
echo file_get_contents("1.txt");
;?>


Вопрос: в чём будет заключаться отличие в ответах сервера при запросе 1.txt и 1.php ?

В браузере отличий, понятное дело, нет, однако их чувствует программа 1С. В случае 1.php она обрезает (или недополучает) ответ, получив около 1 кб smile.  

Это сообщение отредактировал(а) Greendrake - 19.7.2006, 17:59
PM MAIL   Вверх
PARROT
Дата 19.7.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код

$php = file_get_contents('1.php'); 

$fp = fopen('1.txt', 'a'); 
fput($fp, $php); 
fclose($fp); 


В вашем коде лишняя ;  

Это сообщение отредактировал(а) PARROT - 19.7.2006, 18:26


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Greendrake
Дата 19.7.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: нет
Всего: 6



PARROT, не понял к чему приведённый вами код. Он заносит содержимое 1.php в конец 1.txt - как это относится к сабжу? 
PM MAIL   Вверх
PARROT
Дата 19.7.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Greendrake @  19.7.2006,  18:59 Найти цитируемый пост)
Вопрос: в чём будет заключаться отличие в ответах сервера при запросе 1.txt и 1.php ?

Просто не совсем понятно, что вы хотите получить в итоге, результат работы скрипта или что-то иное.

 


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Greendrake
Дата 19.7.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: нет
Всего: 6



Цитата(PARROT @ 19.7.2006,  21:01)
Просто не совсем понятно, что вы хотите получить в итоге, результат работы скрипта или что-то иное.

Я просто хочу чтобы скрипт тупо прочитал и выдал содержимое txt-файла.
Но на этом мои желания не заканчиваются.
Ещё я хочу, чтобы клиент не мог догадаться, что ему подсунул сервер - собственно текстовый файл, или его же содержимое, выданное скриптом.

Предыстория вопроса:
Обнаружено, что программа 1С при при обращениях к сайтам в одних случаях получает страницы полностью, а в других - обрезанные. При этом браузеры получают страницы целиком всегда.
С целью докопаться до причин, был поставлен следственный эксперимент, о котором здесь и идёт речь. Программа 1С получает содержимое файла txt при его прямом запросе - целиком и полностью, а при запросе скрипта - не полностью. Хотя браузеры выдают идентичное содержимое при запросе и того и другого.

Кстати, на различия в URLах - .php или .txt на конце можно не грешить, это я уже проверял с помощью mod_rewrite, подсунув скрипт по запросу txt. Результат не отличался от запроса php, т. е. был обрезанным в 1C.

Походу, тут ничего не остаётся кроме как побайтно сверять ответ сервера со всеми заголовками в обоих случаях - txt и php.
Вот ответы, которые удалось подсмотреть с помощью анализатора трафика:

Ответ на запрос текстового файла

user posted image

Ответ на запрос скрипта, тупо выдающего содержимое текстового файла

user posted image

Что бросается в глаза?
Во-первых, у ответа на запрос txt указана длина - Content-Length. Во вторых, ответ на запос скрипта выдан в неком chunked формате - что это такое и как с этим бороться?

Короче, теперь вопрос стоит так:
Как нужно изменить php-скрипт, чтобы его ответ был таким же как у txt?

Добавлено @ 22:03 
Короче, я так подозреваю, нужно просто ставить заголовок Content-Length с длиной файла. Вот тут у чувака похожая трабла была http://ru.php.net/header#50948
Заврта попробую. 
PM MAIL   Вверх
szz
Дата 20.7.2006, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата
выдан в неком chunked формате - что это такое и как с этим бороться?

   Это как бы законсервированный способ передачи. Файл выдается по кусочкам (размер текущего кусочка указан в хедере Chunk size: xxx octets). Браузер после получения этого кусочка должен запросить новый и так до конца - это делается чтоб юзер видел постепенно загружающийся файл, а не ждал пока все-все подгрузится, а потом отобразится (или для долгоиграющих файлов, вроде видео или аудио потоков)
   Бороться с этим так: 
 поставить длину (верно мыслишь) и 
Код

header('Transfer-encoding: 7bit'); // не уверен можно ли ставить 8bit, так как я это делал только с western текстами, но ты попробуй.

  У меня MDM Zinc тоже грузил только первый чанк - поставив 7bit и длину - я все исправил.  

Это сообщение отредактировал(а) szz - 20.7.2006, 05:48


--------------------
PM   Вверх
Greendrake
Дата 20.7.2006, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: нет
Всего: 6



Всё, вот рабочее решение

Код

<?

$file="1.txt";
header('Content-Length: '.filesize($file));
header('Content-Type: text/plain; charset=windows-1251');
echo file_get_contents($file);

?>
 
PM MAIL   Вверх
szz
Дата 20.7.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Что-ж, значит 1C поумнее Zinca будет ))) 


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0871 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.