2009-07-31 22 views
6

私はサーバー上でUbuntuを使用しています。私はアクセスするためにパテを使用しています。私は私のPHPサイトのcronjobsを作成したい。これどうやってするの?Ubuntu上のCronジョブphp

+0

serverfaultのに属しています。 – hobodave

+0

あなたが自分自身を正しく説明していないと分かっている場合は、複数回質問をしないでください。質問の編集リンクをクリックして詳細を追加してください。 – dimo414

答えて

15

あなたがあなたのPHPのサイトには、いくつかの定期的なタスクを実行することを意味している場合、2つの方法があります。

1)cronを使用して特定のページを定期的に取得します。これは、テキストベースのブラウザ(例: Lynx。あなたはこのようなあなたのスクリプトを引っ張っ:

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

(これは、毎分、それを呼び出します、あなたのアプリケーション内で独自のスケジュールを構築することができますこの方法。)

2)あなたは、コマンドラインを使用してスクリプトを呼び出しますPHPインタプリタ:

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

一般に、溶液2が良いです。ただし、ボックスにアクセスする必要があります。 cronをホストにインストールできない場合、ソリューション1のcronは別のホストからトリガーされます。

また、コマンドラインバージョンのphpを使用している一般的な落とし穴に注意してください。 debian(そして他のシステムの場合もあるかもしれませんが)では、cgi、cli、mod_php用に別々のphp.iniファイルがあるかもしれません。設定をカスタマイズした場合は、コマンドラインphpが正しいものを使用していることを確認してください。私はいくつかのベンチマークを作っDIMOことにより、コメントに応えて

/usr/bin/php -i | less

:あなたはでこれをテストすることができます。

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) 

Serverがする(Mac OS X上)APCとlighttpdphp(fastcgi)次のとおりです。私は(これは単にエコー "テスト")オオヤマネコ、wgetのとPHP-CLIで1000回単純なローカルPHPスクリプトと呼ばれます。

確かに、wgetはスピードに関して仕事のための最良のツールです。

したがって、php-cliの結果は、他の方法が既に実行中のPHPスレッドをopcodeキャッシュで再利用するので、それほど驚異的ではありません。

php-cliを使用する唯一の本当のメリットはセキュリティです。外部からはスクリプトをdocrootの外に置くことはできないため、セキュリティはセキュリティになります。

(このテストは明らかに100%正確ではありませんが、違いは、私の意見ではかなり明白です)

+1

私はwgetがlynx-dumpよりも優れたツールだと思います – dimo414

1

私はあなたのPHPサイトをバックアップすると思いますか?使用してのcrontabを編集します。

crontab -e 

これは私が挿入モード用プレス、あなたがcrontabファイルを編集できるVIのインスタンスを起動します。その後、例えば、cronのエントリが実行され、その時点で実行するコマンドになるときのために情報を配置する必要があります。

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

したがって、上記のコマンドは、時の/ var/www /のphpsiteであなたのphpsiteをgzipタールます毎日午後10時半。 でのviを終了し、終了して:

WQさらに参照のためにこれを参照してください。

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