2014-02-21 3 views
0

많은 웹 사이트에서 많은 파일을 다운로드해야합니다. 10 파일 일반적으로 모든 파일을 다운로드하려면 (8-9) 초 걸립니다.PHP는 여러 파일을 컬 또는 다른 방법으로 동시에 다운로드합니다.

내가 원하는 것은 (1-2 초) 작업이 완료되도록 요청을 동시에 (병렬) 수행하는 것입니다.

단일 요청 및 여러 요청에서 컬 사용을 알고 있습니다. 그러나 10 파일의 요청은 동시에 시작해야합니다.

e.g. 02:38:14 // all the request started at this time 

나는 많은 양의 대역폭을 가지고 있기 때문에 병렬 다운로드는 문제가되지 않습니다.

이 경우 컬링이나 다른 방법으로 가능합니까?

+0

PHP에서 하시겠습니까? 일반적으로 e. 지. 껍질에? – ntaso

+0

@ntaso 쉘 또는 PHP 모두 괜찮아요 –

답변

1

셸에서이 작업을 수행하려면 &으로 백그라운드에 명령을 보내면됩니다. 이 작업을해야합니다 :

for I in `cat urls.txt`; do curl $I & done 

urls.txt라는 파일에있는 모든 URL을 통해 루프와 그들에 curl URL &을 실행합니다. &은 curl이 백그라운드에서 실행되도록 지시합니다.

+0

PHP exec ('curl'. $ url_list [$ i].>> filename.txt &');에있는 루프에서 이미 이것을 시도했지만 일부 URL 내용이 비어 있습니다 ** empty * *. –

+0

filename.txt의 내용을 덮어 쓴 것처럼 보입니까? 아니면 filename.txt도 스크립트에 동적으로 작성 되었습니까? 그렇지 않으면'>> filename.txt'를 사용하십시오. 모든 프로세스가 올바르게 끝나야합니까? 그렇지 않으면'curl_multi_init'을 확인하십시오. – ntaso

+0

filename 모든 것이 동적으로 만들어집니다. –

관련 문제