2009-07-31 3 views
6

나는 서버에서 우분투를 사용하고 있으며 퍼티를 사용하여 액세스하고 있습니다. 내 PHP 사이트에 cronjob을 만들고 싶습니다. 어떻게해야합니까?PHP에 대한 우분투 크론 작업

+0

serverfault에 속합니다. – hobodave

+0

또한 한 번 이상 질문하지 마십시오. 자신을 올바르게 설명하지 않는다는 것을 알고 있으면 질문에 대한 수정 링크를 클릭하고 자세한 정보를 추가하십시오. – dimo414

답변

15

당신이 당신의 PHP 사이트가 몇 가지 일반적인 작업을 수행 할 것을 의미하는 경우, 두 가지 방법이 있습니다.

1) cron을 사용하여 특정 페이지를 정기적으로 가져옵니다. 텍스트 기반 브라우저로이 작업을 수행 할 수 있습니다. 스라소니. 이 같은 스크립트를 당겨 :

* * * * * /usr/bin/lynx http://yourhost.com/cron.php -dump > /dev/null

(이것은 매 순간을 호출하면 응용 프로그램 내부에 자신의 일정 구축 할 수 있습니다 그런 식으로.) 당신은 명령 줄 스크립트를 호출)

(2) PHP 인터프리터 :

* * * * * /usr/bin/php /path/to/cron.php > /dev/null

일반적으로 솔루션이 더 낫다. 그러나 상자에 액세스해야합니다. cron을 호스트에 설치할 수없는 경우 솔루션 1의 cron이 다른 호스트에서 트리거 될 수 있습니다.

또한 php의 명령 줄 버전을 사용하는 일반적인 함정에 유의하십시오. 데비안 (및 잠재적으로 다른 시스템)에서는 cgi, cli 및 mod_php에 대해 별도의 php.ini 파일이있을 수 있습니다. 설정을 커스터마이징했다면, 커맨드 라인 PHP가 올바른 것을 사용하고 있는지 확인하십시오. 당신은 이것을 테스트 할 수 있습니다

/usr/bin/php -i | less

는 dimo에 의해 코멘트에 응답에서 나는 몇 가지 벤치 마크를 만들었다.

kbsilver:temp kbeyer$ time . wget.sh 

real 0m14.223s 
user 0m2.906s 
sys 0m6.335s 

(Command: wget -O /dev/null "localhost/test.php"; 2> /dev/null) 

kbsilver:temp kbeyer$ time . lynx.sh 

real 0m26.511s 
user 0m5.789s 
sys 0m9.467s 

(Command: lynx -dump "localhost/test.php"; > /dev/null) 




kbsilver:temp kbeyer$ time . php_cli.sh 

real 0m54.617s 
user 0m28.704s 
sys 0m18.403s 

(Command: /opt/local/bin/php /www/htdocs/test.php > /dev/null) 

서버 (맥 OS X)에 APC와 lighttpd, php(fastcgi)이다 : 나는 (이 단지 에코 "테스트") 살쾡이, wget과 PHP-CLI를 1000 배 간단한 지역의 PHP 스크립트를했다.

실제로 wget은 속도와 관련하여 작업을위한 최상의 도구입니다.

그래서 php-cli의 결과는 다른 방법들이 이미 실행중인 PHP 스레드를 opcode 캐시로 재사용하므로 그다지 놀랄만하지 않습니다.

php-cli를 사용하는 유일한 이점은 보안입니다. 스크립트를 외부에서 사용할 수 없으므로 docroot 밖에 둘 수 없습니다.

(이 테스트는 분명히 100 % 정확하지 않지만 차이점은 제 의견으로는 분명합니다.)

+1

wget이 lynx보다 더 나은 도구라고 생각합니다. -dump – dimo414

1

PHP 사이트를 백업하고 싶습니다. 삽입 모드를 누릅니다 내가,

crontab -e 

이 당신은 crontab을 편집 할 수있는 VI의 인스턴스를 시작합니다 : 사용은 crontab을 편집합니다. 그러면 예를 들어, 실행되는 cron 항목 및 명령이 그 시간에 실행하는 경우에 대한 정보를 넣어해야합니다

30 10 * * * tar -zcvf ./myphpsite.tar.gz /var/www/phpsite 

그래서 위의 명령에서의/var/www /에서 phpsite에 phpsite을 gzip을 타르 것 매일 10:30 pm. 종료 및 와 VI를 종료 :

더 참조 할 수 있도록이를 참조 WQ :

http://www.adminschoice.com/docs/crontab.htm

관련 문제