2014-07-06 2 views
4

단일 TCP 연결을 통해 여러 요청을 수행하기 위해 PHP cURL HTTP 파이프 라이닝 기능을 사용하려고합니다. 이 페이지를 참조하십시오 http://www.php.net/manual/en/function.curl-multi-setopt.php 다음을 추가하여 curl_multi_exec()에 pipleining을 활성화하고 있습니다 :HTTP 파이프 라이닝을 사용하여 단일 TCP 소켓을 통해 PHP cURL 핸들을 보내는 방법은 무엇입니까?

curl_multi_setopt ($ mh, CURLMOPT_PIPELINING, 1);

내가 여기에 나열하는 큰 소스를 게시하고 싶지 않아,하지만 당신은 쉽게 보거나 내가 '사용 모니터링 TCP 연결의 경우 여기 https://github.com/anovikov1984/pipelining-example

내 GitHub의에서 전체 예제를 체크 아웃 할 수에서 netstat -t -u -c '명령을 사용합니다.

위에서 언급 한 내 레포에는 두 개의 스크립트가 있습니다. 하나는 Ruby 용이고 다른 하나는 PHP 용입니다. Ruby 버전은 원하는대로 작동하며 3 GET 요청에 대해 단일 TCP 연결 만 엽니 다. 그러나 PHP cURL 버전은 curl_multi_exec() 함수에 전달 된 cURL 핸들 수만큼의 TCP 연결을 엽니 다.

내가 뭘 잘못하고 있니?

+0

어쩌면 추가 'KEEP-ALIVE' 도움이? 확실하지 않습니다 .. 기본적으로 활성화되어 있다고 생각합니다. 웹 서버를 추가 할 수 있습니까? 더 빨라요 아니면 fastcgi 또는 mod 기반입니다. – DanFromGermany

+0

몇 개의 tcp 연결이 안정화되어 있는지 신경을 써야하는 이유는 무엇입니까? –

답변

1

PHP가 curl_multi_ *를 PIPELINING으로 구현 한 버그 일 수 있습니다. PIPELINING을 사용할 때 개발자가 여러 요청에서 컬이 어떻게 작동하는지 지시 할 수 있도록하는 데 필요한 모든 상수가 노출되지 않을 수도 있습니다.

내가 여기에 버그 리포트를 제출 한 : https://bugs.php.net/bug.php?id=68449

+0

버그 추적 시스템에 버그 보고서를 제출할 때 보고서는 문제 설명을 위해 다른 웹 사이트의 토론 링크에 의존하기보다는 문제가 무엇인지 지정해야합니다. 특히, 버그 리포트의 제목은 일반 용어가 아닌 구체적이어야합니다. – thomasrutter

+0

사과드립니다. 나는 "패키지"옵션이 적절하다고 생각했다. 패키지 옵션이 "cURL 관련"으로 표시된 점에 유의하십시오. 링크 위에 간단한 설명이 나와 있습니다. 그게 명확하지 않다면 사과하겠습니다. 누군가가 버그를 실제로 처리하고 있고 버그가 불분명하다고 느낀다면 스택 오버플로로 대화하는 대신 추가 정보를 얻으 려면 저와 함께 스레드를 열지 않겠습니까? 더 자세한 설명을 반영하여 버그 티켓을 업데이트하여 나중에 참조 할 수 있도록 버그 수정 방법을 배울 수 있습니다. – datashovel

+0

내 의견은 관찰자와 마찬가지로, 나는 PHP 또는 컬 프로젝트와 아무 상관이 없으므로 어떤 어려운 감정도 느끼지 않습니다. 버그 리포트에 더 많은 관심을 기울일 수있는 방법에 대한 팁으로 작성되었습니다. – thomasrutter

관련 문제