programing tip

WGET 시간이 초과됩니까?

itbloger 2020. 10. 26. 07:45
반응형

WGET 시간이 초과됩니까?


다음 명령을 사용하여 Wget을 사용하여 cron을 통해 PHP 스크립트를 실행하고 있습니다.

wget -O - -q -t 1 http://www.example.com/cron/run

스크립트를 처리하는 데 최대 5-6 분이 소요됩니다. WGet은 그것을 기다렸다가 필요한 모든 시간을 제공합니까, 아니면 시간 초과됩니까?


wget의 man 페이지에 따르면 시간 제한과 관련된 몇 가지 옵션이 있으며 기본 읽기 시간 제한은 900 초입니다. 따라서 시간 제한이있을 수 있습니다.


문제의 옵션은 다음과 같습니다.

-T seconds
--timeout=seconds

네트워크 시간 초과를 초로 설정합니다. 이 지정하는 것과 같습니다 --dns-timeout, --connect-timeout그리고 --read-timeout모두 같은 시간에.


그리고 그 세 가지 옵션 :

--dns-timeout=seconds

DNS 조회 시간 제한을 초로 설정합니다.
지정된 시간 내에 완료되지 않는 DNS 조회는 실패합니다.
기본적으로 시스템 라이브러리에 의해 구현 된 것 외에는 DNS 조회에 대한 시간 제한이 없습니다.

--connect-timeout=seconds

연결 제한 시간을 초로 설정하십시오.
설정하는 데 더 오래 걸리는 TCP 연결은 중단됩니다.
기본적으로 시스템 라이브러리에 의해 구현 된 것 외에는 연결 제한 시간이 없습니다.

--read-timeout=seconds

읽기 (및 쓰기) 제한 시간을 초로 설정하십시오.
이 시간 초과의 "시간"은 유휴 시간을 나타냅니다. 다운로드의 어느 지점에서든 지정된 시간 (초) 이상 데이터가 수신되지 않으면 읽기가 실패하고 다운로드가 다시 시작됩니다.
이 옵션은 전체 다운로드 기간에 직접적인 영향을주지 않습니다.


나는 다음과 같은 것을 사용한다고 가정한다.

wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run

스크립트 기간보다 오래 전에 시간 초과가 없는지 확인해야합니다.

(예, 아마도 가장 잔인한 해결책 일 것입니다 ^^)


기본 시간 제한은 900 초입니다. 다른 시간 제한을 지정할 수 있습니다.

-T seconds
--timeout=seconds

기본값은 20 번 재 시도하는 것입니다. 다른 시도를 지정할 수 있습니다.

-t number
--tries=number

링크 : wget man 문서


귀하의 질문에서 PHP 스크립트라고 말 했으므로 가장 좋은 해결책은 단순히 스크립트에 추가하는 것입니다.

ignore_user_abort(TRUE);

이런 식으로 wget종료 되더라도 PHP 스크립트는 최소한 max_execution_time한계를 초과하지 않을 때까지 계속 처리 됩니다 (ini 지시어 : 기본적으로 30 초).

당으로 wgetanyay 당신이 그 제한 시간을 변경해서는 안 유닉스 매뉴얼에 따라 기본 wget을 제한 시간은 900 초 (15 분)입니다 5-6 분 당신이 필요로하는 것을 훨씬 큰 whis.


버전 1.14 이전에는 버그 로 인해 https를 통해 다운로드하는 경우 wget 시간 초과 인수가 준수되지 않았습니다 .

참고 URL : https://stackoverflow.com/questions/2291524/does-wget-timeout

반응형