Ответ от PHP без HTTP заголовков

vikingmrboo

Новичок
Браузер все правильно считает, он не умеет заголовок 102. Его понимают только вебдав-клиенты.

В случае с браузером надо делать поллинг.
да браузер пусть хоть отвалится, мне главное, чтобы родитель fcgid не убил ребенка, котогрый еще жив.
request -> parent -> child
если ребенок не отвечает больше 20 секунд, он его грохает, так как считает что помер
На nginx запретить проксирование 102го заголовка - Вариант, но это тоже не выход. Браузер хоть и не поймет 102й заголовок(в чем сомневаюсь, дожен же, это стандарт как ни как), он не закроет соединение/, пока приходят данные. Главное, чтобы эти данные были в заголовках, по этому нельзя раньше времени отправлять \r\n\r\n
 

fixxxer

К.О.
Партнер клуба
Если нужно так втупую, то просто отключи везде буферизацию, сразу отдай заголовки, и кидайся незначимыми кусками тела, типа <!-- -->
 

vikingmrboo

Новичок
Если нужно так втупую, то просто отключи везде буферизацию, сразу отдай заголовки, и кидайся незначимыми кусками тела, типа <!-- -->
json должен быть в ответе :(. в принципе, можно пробелы слать. Да, это выход. Спасибо
 

vikingmrboo

Новичок
Если нужно так втупую, то просто отключи везде буферизацию, сразу отдай заголовки, и кидайся незначимыми кусками тела, типа <!-- -->
Не прокатило. не все клиенты нормально разбирают ответ без Content-Length: :))) Продолжаю пляски с бубном
 

vikingmrboo

Новичок
Если нужно так втупую, то просто отключи везде буферизацию, сразу отдай заголовки, и кидайся незначимыми кусками тела, типа <!-- -->
а вообще, клиенту нужен только результат... его то он и потом спросить может, зачем соединение то держать, по большому счету? Теперь вопрос, как правильно закрыть соединение только с nginx - client, оставив связку parent-child, но думаю, это гораздо проще найти в гугле.
 

hell0w0rd

Продвинутый новичок
А почему нельзя посылать 1 запрос, он дергает демона, демон делает свои дела, а клиентом опрашивать сервер каждые 10 сек, например. Как только демон закончил формирование ответа - получаете ответ.
 
  • Like
Реакции: WMix

grigori

( ͡° ͜ʖ ͡°)
Команда форума
: именно php, это легко определить, подключившись к cgi
Код:
curl -i "http://127.0.0.1:10080/index.php" -H "Host: my.local"
Пробую:
$ curl -i "http://127.0.0.1:9000/index.php" -H "Host: my.local"
curl: (56) Failure when receiving data from the peer
нет, не умеет Curl общаться с fcgi! интересно, что у тебя на порту 10080 - не веб-сервер ли?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не все клиенты нормально разбирают ответ без Content-Length
значит, это не браузеры, и ты мутишь
чтобы слать без Content-length по RFC надо ставить
Transfer-Encoding: chunked
и оборачивать каждую порцию информации в чанки, соответственно
 

Вурдалак

Продвинутый новичок
Для ответа сервера необязательно, конец сообщения может быть завершением соединения.
 

vikingmrboo

Новичок
Добрый день. У меня не fast-cgi, у меня http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
Остановился на кривом решении, отдать все заголовки, а потом, периодически слать пробел для ответа json. Работает, но как то не красиво. Хотелось бы конечно с 102м заголовком.
По RFC допускается второй \r\n, если заголовок множественный (как 102й, например). Но так как я не отдал Content-Length, апаче сам превращает ответ в chunked, и не дает это поменять из php, Что превращает
Код:
file_put_contents('php://output', "HTTP/1.1 102 Processing\r\n");flush();
в
Код:
{len}
HTTP/1.1 102 Processing
...
{len}
HTTP/1.1 200 OK
{len}
...
0
Разумеется, браузер от такого в шоке и считает это контентом. В общем, php без бубна не для таких задач.
 

hell0w0rd

Продвинутый новичок
По ссылке бы прочел)
Any program assigned to the handler fcgid-script is processed using the FastCGI protocol
Дело лишь в том что ты не хочешь разобраться в устройстве http и том как сервер отсылает ответ.
 

fixxxer

К.О.
Партнер клуба
Во-первых, по протоколу (fast)cgi такое хрен отдашь. Во-вторых, браузеры не понимают 102. А то, что ты пытался сделать это и есть отправка _тела_ (Status: 200 php-fcgi добавляет сам).
 
  • Like
Реакции: WMix
Сверху