2014-05-30 3 views
0

PHP를 사용하여 서버 A에서 서버 B로 병렬 요청을 만들고 싶습니다. Curl Multi Handle과 Http Pooling 중에서 가장 좋은 방법은 무엇입니까?PHP Http Pooling 대 Curl Multi

이 두 가지 장단점은 무엇입니까?

성능, 메모리 사용량, CPU 사용량에있어 최적의 방법을 제안 해주십시오.

답변

1

PHP는 표준 CURL 명령과 반대되는 이유로 메모리에서 실제로 벗어납니다. 또한 curl은 병렬 요청을 처리 할 수 ​​없습니다. multi 명령은 모든 요청이 완료 될 때까지 정지 할 블록 단위로 요청을 실행합니다. 필자가 알고있는 한 PHP에서 병렬 요청을 할 수 없습니다. 가장 좋은 방법은 명령 줄에서 xargs를하고 컬을 사용하는 것입니다 :이 파일의 URL (또는 컬 명령)을 다운로드합니다

cat urls.txt | xargs -L 1 -P 10 timeout 45 curl 

. -L은 행 수를, -P는 원하는 병렬 연결 수를 의미합니다.

PHP에서 exec 또는 시스템을 통해이를 실행하는 것이 가장 효율적입니다. 또는 당신 같은 CURL 래퍼를 사용하는 것이 좋습니다 :

http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading

그러나 언급 한 바와 같이,이 평행하지 않습니다.