cron 작업에서 curl을 어떻게 사용합니까?


12

일주일에 한 번 URL을 같은 서버에서 호출하는 cpanel에 cron 작업을 설정해야합니다. wget 을 사용하려고 했지만 사용중인 공유 서버에서 이것이 비활성화되어있는 것으로 나타났습니다.

wget에 대한 대안이 있습니까? curl을 사용할 수 있다고 들었지만 cron 명령에서 curl 을 설정하는 방법을 모르겠습니다.

또한 cronjob이 완료 될 때 아무 작업도 수행하지 않도록하는 명령은 무엇입니까?

어떤 아이디어라도 대단히 감사합니다!


1
wget을 사용할 수 있다면 어떻게해야합니까?
user9517

wget을 비활성화 한 경우 왜 컬을 허용합니까?
andol

@Iain-PHP 스크립트를 처리해야합니다
davidhyland

@Andol-아주 좋은 질문입니다. 그것이 바로 그 방법입니다
davidhyland

답변:


20

wget을 사용하는 대신 curl은 다음과 같이 작동합니다.

curl --silent http://domain.com/cron.php

wget과 같은 방식으로 작동합니다. PHP 파일이 실행중인 경우 다음과 같이 커맨드 라인 PHP 인터프리터를 통해 실행할 수 없습니다.

php -q /path/to/cron.php

웹 서버 요청에서 동일하며 종종 웹 서버 / 컬을 통해 호출 할 때 특정 시간 초과 제한없이 훨씬 빠르게 작동합니다.


그런 식으로 curl을 호출하면 결과가 stdout에 인쇄됩니다. wget과 동등하게 동작하고 URL을 기반으로 파일 이름으로 출력을 저장하려면 --remote-name 플래그를 추가하려고합니다.
andol

--silent는 응답이나 출력이 없음을 의미합니까?
davidhyland

1
또한 명령 행에서 php 스크립트를 호출해도 반드시 같은 결과를 얻을 수있는 것은 아닙니다. 다른 구성 가능성 이외에도 다른 방식으로 스크립트를 실행하는 드문 시나리오는 없습니다. 설정에 따라 다릅니다.
andol

글쎄, "curl --silent domain.com/script.php > / dev / null 2> & 1"을 사용하여 작동했지만 "curl -o --url domain.com/script.php > / dev / null 2> & 1 "차이점은 무엇입니까?
davidhyland

1
첫 번째 명령은 모든 출력을 / dev / null로 보내고 두 번째 명령은 -url스크립트를 실행하는 사용자의 홈 디렉토리에 호출 된 파일을 작성합니다 . 여기에는 php 파일의 출력이 포함되며 다른 모든 출력은 / dev / null로 이동합니다.
user9517

6

컬이 가능하면 다음과 같은 것을 시도해 볼 수 있습니다.

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

이렇게하면 curl이 완전히 조용해 지므로 완료시 이메일을받지 못합니다.


4
--show-error 옵션도 사용하는 것이 좋습니다. 따라서 정상적인 작동에는 침묵하지만 오류가 발생하면 오류가 발생합니다.
emerino

6

이 매개 변수는 전송에 허용되는 최대 시간을 설정하므로 --silent 외에도 "-m"매개 변수를 추가하는 것이 좋습니다. 매분마다 cron을 호출하고 스크립트에 2 분이 걸린다고 상상해보십시오. 이는 서버로드 또는 기타 사항에 나쁜 영향을 줄 수 있습니다.

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.