В чем может быть проблема?

akxxiv

Новичок
В чем может быть проблема?

Не могу понять ни как. Сайт http://aitipro.ru. Все замечательно, но иногда толи сервер, толи РНР, толи еще что, но вначале и вконце кода появляются какие-то цифры, в результате верстка едет. Смотрите сами.
С чего такое может быть? И как исправить?
 

zerkms

TDD infected
Команда форума
подобный устойчивый глюк видел, когда тачка стоит за 2мя сквидами (один из которых конфигурился криворуким админом)
=> думаю что проблема корнями уходит туда же
 

akxxiv

Новичок
Да но каким образом это исправить и выяснить при каких условиях и почему это происходит?
 

Major

Новичок
Это похоже на то, когда забираешь контент через сокеты по протоколу HTTP 1.1. Там применяется транспортное кодирование и контент разбивается на блоки =).
 

kruglov

Новичок
Это похоже на то...
Это оно и есть. Chunked. Ну или его тщательная имитация.

akxxiv
А как сайт устроен?

Заголовки:
HTTP/1.x 200 OK
Server: nginx/0.5.32
Date: Mon, 12 Nov 2007 17:34:27 GMT
Content-Type: text/html
Transfer-Encoding: chunked, chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Mon, 12 Nov 2007 17:34:27 GMT

С чего это chunked там 2 раза...
 

Major

Новичок
чудеса. Я обновлял раз 10 и там, то появлялось, то исчезало:

Transfer-Encoding: chunked, chunked

Когда вообще отсутствует указание на то что будет применен chunked, то все ок и это понятно. Но загадка в том, что оно переодически так =). Что-то реально с сервером намудрил ацкий одмин.
 

akxxiv

Новичок
Автор оригинала: kruglov
Это оно и есть. Chunked. Ну или его тщательная имитация.

akxxiv
А как сайт устроен?

Заголовки:
HTTP/1.x 200 OK
Server: nginx/0.5.32
Date: Mon, 12 Nov 2007 17:34:27 GMT
Content-Type: text/html
Transfer-Encoding: chunked, chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Mon, 12 Nov 2007 17:34:27 GMT

С чего это chunked там 2 раза...
Сайт устроен так. Разбирается урл, берется инфа из бд, формируется страница, оттдается 200 хефдер и и ласт-модифед, оттдается страница.
Почему чанкед два раза ХЗ. Надо спросить у админа. Правда сейчас пробовал, ошубку так словить и не смог. Может уже исправил админ-то...
 

akxxiv

Новичок
В курсе. Но не в курсе почему. Пытался исправить. Но сегодня опять такая хрень

-~{}~ 14.11.07 10:11:

Вот заголовки когда ошибка наблюдается

HTTP/1.1 200 OK
Server: nginx/0.5.32
Date: Wed, 14 Nov 2007 07:15:24 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Wed, 14 Nov 2007 07:15:24 GMT
Transfer-Encoding: chunked


А здесь, когда все нормально.

HTTP/1.1 200 OK
Server: nginx/0.5.32
Date: Wed, 14 Nov 2007 07:17:02 GMT
Content-Type: text/html
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Wed, 14 Nov 2007 07:17:02 GMT
Content-Length: 6596


В первом случае Transfer-Encoding: chunked два раза, а во втором ни одного. Как kruglov и говорил. Только теперь не через запятую, а просто дублируется.

А что это за заголовок такой? Зачем он и кем посылается. И как от него избавится?
 

kruglov

Новичок
Возможно, какая-то фигня на сайте работает как прокси (возможно, для кэширования), читает сайт через HTTP и отдает его. Причем сама по себе работает глючно и не раскодирует его при получении, но кодирует еще раз при отдаче.

Сам по себе Transfer-Encoding: chunked вещь полезная и служит для контроля передачи данных, когда нету content-length.
 

fixxxer

К.О.
Партнер клуба
nginx кстати keepalive к бэкенду не поддерживает, и вообще общается с ним только по http/1.0
что на бэкенде то?
 

akxxiv

Новичок
Хз. знаю что там два nginx и апач стоит. nginx скорее для отдачи статических файлов. Кстати когда оттдает апач этих ошибок не наблюдантся
 

fixxxer

К.О.
Партнер клуба
два nginx это как? nginx<->nginx<->apache? :) тогда такое может иметь место быть, наверное (хотя хз). только нахрена такой изврат?
 

Luf

Новичок
На сайте используются ob_* функции и явно отдаётся 200?
Тогда проверьте что уровень ob_start и ob_*_clean совпадают.
 

Luf

Новичок
Мы с Gorynych наткнулись как раз на этот же косяк. Было из-за превышения количества ob_get_clean над ob_start
Вообще логика того. что посылается chunked - понятна. Из-за кеширования неизвестно когда уйдёт следующий кусок.
 

akxxiv

Новичок
Я тут еще заметил подобный трабел на сайте http://service-desk.ru/
Только там подобный глюк вылезает когда через Фаерфокс смотришь. В ИЕ проблем не наблюдаю. Это вообще странно.

-~{}~ 16.11.07 12:12:

Автор оригинала: Luf
На сайте используются ob_* функции и явно отдаётся 200?
Тогда проверьте что уровень ob_start и ob_*_clean совпадают.
Да именно так. Хз. С первого взгляда вроде совпадают. А что более критично если ob_end_clean больше или ob_start ?
 

Luf

Новичок
если ob_start больше - это вообще не критично - в конце будет неявный выброс содержимого в браузер и всё.

А глюк только в в фоксе тк ие более свободно обрабатывает всё подряд. В том числе и хедеры.
 

kruglov

Новичок
ие более свободно обрабатывает всё подряд
Но это не значит, что он выданные ему сhunked-контент без соответствующего упоминания в хедерах расшифрует силой мысли. И наоборот.
 
Сверху