2009-07-31 13 views
6

Używam Ubuntu na serwerze i używam Putty do dostępu. Chcę utworzyć cronjobs dla mojej witryny php. Jak mogę to zrobić?Praca Cron na Ubuntu dla php

+0

Należy na ServerFault. – hobodave

+0

Prosimy również nie zadawać pytania więcej niż jeden raz, jeśli zdajesz sobie sprawę, że nie wyjaśniasz się poprawnie, kliknij link edycji swojego pytania i dodaj więcej informacji. – dimo414

Odpowiedz

15

Jeśli masz na myśli, że chcesz witryny php zrobić kilka regularnych zadań, istnieją dwa sposoby.

1) Za pomocą narzędzia cron można regularnie pobierać określoną stronę. Możesz to zrobić w przeglądarce tekstowej, np. ryś. Można wyciągnąć swój skrypt tak:

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

(Spowoduje to nazwać każdą minutę ten sposób można zbudować swój własny harmonogram wewnątrz aplikacji.)

2) Aby wywołać skrypt z linii poleceń php interpreter:

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

Ogólnie rozwiązanie dwóch jest lepsza. Jednak będziesz potrzebować dostępu do skrzynki. Cron w rozwiązaniu można uruchomić z innego hosta, jeśli nie możesz zainstalować cronów na hoście.

Należy również pamiętać o typowej pułapce za pomocą wiersza polecenia w wersji php. W debian (i potencjalnie innych systemach) mogą istnieć oddzielne pliki php.ini dla cgi, cli i mod_php. Jeśli dostosowałeś swoją konfigurację, upewnij się, że php wiersza poleceń używa poprawnego. Można to sprawdzić w:

/usr/bin/php -i | less

W odpowiedzi na komentarz przez Dimo ​​Zrobiłem kilka wzorców. Zadzwoniłem prosty skrypt php lokalnej (co po prostu echo "test") 1000 razy ryś, wget i php-cli:

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) 

serwer jest lighttpd, php(fastcgi) z APC (w systemie Mac OS X).

Okazuje się, że rzeczywiście wget jest najlepszym narzędziem do pracy w zakresie prędkości.

Dlatego wynik php-cli nie jest zaskakujący, ponieważ inne metody wykorzystują już uruchomiony wątek php z pamięcią podręczną kodu.

Tak więc jedyną realną zaletą korzystania z php-cli jest bezpieczeństwo, ponieważ skrypt nie będzie dostępny z zewnątrz, ponieważ można go umieścić poza dokumentem.

(Test ten nie jest oczywiście w 100%, ale różnice są oczywiste, moim zdaniem)

+1

Wyobrażam sobie, że wget jest lepszym narzędziem do tego niż rysie -dump – dimo414

1

Założę się, że chcesz wykonać kopię zapasową witryny PHP? Edycję crontab przy użyciu:

crontab -e 

ten rozpocznie się wystąpienie VI, w którym można edytować crontab, naciśnij i dla trybu wstawiania. Następnie należy umieścić w informacji dla kiedy wpis cron będzie działać i polecenie do uruchomienia w tym czasie, na przykład:

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

Więc komenda powyżej będzie tar gzip swoją phpsite w/var/www/phpsite na 22:30 każdego dnia. Wyjście i wyjść z vi : wq

Zobacz to do dalszego odniesienia:

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