1. コマンドラインインターフェイスで動かす
PHPをコマンドラインインターフェイスで動かす方法です。
# 4時半に実行 30 4 * * * php /private/path/to/batch.php
メリット
- サーバ外部から実行されないので、セキュリティ的に安心。
- タイムアウトの心配がない。
- phpコマンドだけあればいい。
- 余計なトラフィックがない。
デメリット
- $_SERVER['SERVER_NAME']などのApache由来の環境変数が取れない。
- ウェブインターフェース用に作ったプログラムがそのまま再利用できない場合がある。
- 処理をトリガするサーバと、処理を行うサーバが同じである必要がある。(* SSHなどでリモートコントロールする場合をのぞく)
2. ウェブ経由で動かす
PHPをウェブ経由で動かす方法です。
# 4時半に実行 30 4 * * * wget --spider http://localhost/batch.php
メリット
- $_SERVER['SERVER_NAME']などのApache由来の環境変数が取れる。
- ウェブインターフェース用に作ったプログラムがそのまま再利用できる。
- 処理をトリガするサーバと、処理を行うサーバが別でもいい。
デメリット
- サーバ外部から実行されうるので、セキュリティ的に心配。あるいは認証処理を実装する必要がある。
- タイムアウトの心配がある。
- wgetコマンドが必要。(別にwgetじゃなくてもいいんだけど。)
- 余計なトラフィックがある。
ケースによって柔軟に使い分けよう
長い処理、セキュリティが担保される必要のある処理は、コマンドラインで。
誰が実行してもよくて、ウェブインターフェース用のプログラムを再利用したい場合は、ウェブ経由で。
まあ、でも、全部、CLIでやってもいいんだけどね。