Cron работа на Ubuntu для PHP - PullRequest
6 голосов
/ 31 июля 2009

Я использую Ubuntu на сервере и использую Putty для доступа. Я хочу создать cronjobs для моего php-сайта. Как я могу это сделать?

Ответы [ 2 ]

15 голосов
/ 31 июля 2009

Если вы хотите, чтобы ваш 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 в первом решении может быть запущен с другого хоста, если вы не можете установить cron на хост.

Также остерегайтесь распространенных ошибок при использовании версии php для командной строки. В Debian (и, возможно, в других системах) могут быть отдельные файлы php.ini для cgi, cli и mod_php. Если вы настроили свою конфигурацию, убедитесь, что в командной строке php используется правильная. Вы можете проверить это с помощью:

/usr/bin/php -i | less

В ответ на комментарий Димо я сделал несколько тестов. Я вызывал простой локальный php-скрипт (который просто повторяет «test») 1000 раз с lynx, wget и 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) 

Сервер lighttpd, php(fastcgi) с apc (в Mac OS X).

Оказывается, действительно, wget - лучший инструмент для работы в отношении скорости.

Таким образом, результат php-cli не так уж удивителен, так как другие методы повторно используют уже запущенный поток php с кэшем кода операции.

Таким образом, единственное реальное преимущество использования php-cli - это безопасность, так как скрипт не будет доступен извне, так как вы можете поместить его вне docroot.

(Этот тест явно не на 100% точен, но, на мой взгляд, различия очевидны)

1 голос
/ 31 июля 2009

Я предполагаю, что вы хотите сделать резервную копию своего сайта PHP? Отредактируйте crontab, используя:

crontab -e

Это запустит экземпляр vi, в котором вы можете отредактировать crontab, нажмите i для режима вставки. Затем вам нужно ввести информацию о том, когда будет запущена запись cron и команда для запуска в это время, например ::100100

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

Таким образом, приведенная выше команда будет разархивировать ваш phpsite в / var / www / phpsite каждый день в 22:30. Выйдите и выйдите из vi с помощью : wq

См. Это для дальнейшей справки:

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

...