다음 명령을 사용하여 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
스크립트 기간보다 더 오래 전에 시간 초과가 없는지 확인해야합니다.
(예, 아마도 가능한 가장 잔인한 해결책 일 것입니다 ^^)
-t
옵션의 별칭 것 같다 --tries
, 수 재시도 수를 설정합니다. ;;; 어떤 종류의 시간 초과와도 관련이없는 것 같지만, 오류가있는 경우 wget이 다운로드를 다시 시도하는 횟수와 관련이 있습니다. 스크립트가 다시 호출됩니다.
--timeout
. 나는 명령에 기본 인증을 사용하고 아마 때문에
기본 시간 제한은 900 초입니다. 다른 시간 제한을 지정할 수 있습니다.
-T seconds
--timeout=seconds
기본값은 20 번 재 시도하는 것입니다. 다른 시도를 지정할 수 있습니다.
-t number
--tries=number
링크 : wget man 문서
귀하의 질문에서 PHP 스크립트라고 말 했으므로 가장 좋은 해결책은 단순히 스크립트를 추가하는 것입니다.
ignore_user_abort(TRUE);
이런 식으로 wget
종료 하더라도 PHP 스크립트는 최소한 max_execution_time
한계를 초과하지 않을 때까지 계속 처리 됩니다 (ini 지시문 : 기본적으로 30 초).
당으로 wget
anyay 당신이 그 제한 시간을 변경해서는 안 유닉스 매뉴얼에 따라 기본 wget을 제한 시간은 900 초 (15 분)입니다 5-6 분 당신이 필요로하는 것을 훨씬 큰 whis.