2012-04-03 7 views
4

"Transfer-Encoding : chunked"가 포함 된 요청에서 POST 데이터를 읽으려고하는데 보내지 만 모든 데이터가 끝날 때까지 스크립트가 실행되지 않습니다 그것이 받아 들여지고 있기 때문에 chunk 된 요청에 PHP가 반응 할 수있게 할 수 있습니까?"chunked"POST 데이터 읽기 PHP에서

Apache와 PHP 5.3.8 사용.

+1

이것은 PHP가 아니라 Apache의 기능입니다. 그리고 짧은 대답은 "아니오"입니다. 무엇을하고 있더라도 [Node.js] (http://nodejs.org/)와 같은 것으로 더 많은 성공을 거둘 것입니다. – DaveRandom

+0

@DaveRandom : 답변으로 게시하십시오. 그래서 아파치가 PHP로 포워딩하기 전에 완료 될 때까지 요청을 보류하고 있다고 말하는 것일까 요? 긴 대답을 얻을 수 있을까요? – nortron

답변

4

현재 아파치 API는 요청이 완전히 수신되기 전에 응답 핸들러를 호출하는 기능을 제공하지 않습니다. 어떤 모듈 (mod_php, mod_cgi 등)도 처리를 시작하여 handler phase까지 요청에 응답 할 수 없으며 요청이 완전히 수신되고 예비 처리/구문 분석 검사가있을 때까지 Apache 코어가이 단계에 도달하지 않습니다 완료되었습니다.

청크 분할 된 스트림을 요청으로 보내는 경우는 드뭅니다. 일반적으로 이와 같은 응답이 있습니다. HTTP는 주로 일대 다 콘텐츠 전달을 위해 고안된 프로토콜입니다. HTTP 서버는 많은 클라이언트가 콘텐츠를 제공하지 않고 많은 클라이언트에 콘텐츠를 제공 할 것으로 기대합니다. 일반적으로이 작업을 수행하려면 원격 스트림 (요청자)에 연결할 서버에서 스크립트를 호출해야합니다.

정확히 무엇을하려고합니까? 어떤 콘텐츠를 전달하려고합니까? 연결의 양쪽 끝을 제어 할 수 있습니까?

+0

좋은 정보, 감사합니다. 나는 휴대 전화에서 음성 인식 API로 녹음 된 오디오의 전송 속도를 높이려고하고 있는데, 둘 다 내가 제어한다. 마이크가 완성 된 녹음을 기다리는 대신 음성을 전달하자 마자 음성 인식 측에서 데이터 수신 및 처리를 시작하고 싶습니다. 어떤 추천? – nortron

+1

단일 HTTP 요청을 고수하기보다는 별도의 요청으로 스트림을 분할 할 수 있습니까? 예를 들어 휴대 전화에 몇 KB의 오디오 데이터를 캐시하고 예를 들어 다음과 같이 서버에 보낼 수 있습니다. 호출의 고유 ID를 포함하는 쿠키 값. 그런 다음 서버는이 ID를 사용하여 메시지를 청크로 처리하고 다시 서버 측에 다시 넣을 수 있습니다. 이 접근법은 잠재적으로 서버에서 한 번에 둘 이상의 청크를 처리 할 수 ​​있다는 장점이 있습니다. 그것은 더 복잡 할 것입니다 - 즉, 여러 동시 스트림을 추적하십시오. – DaveRandom