suin.io

cronでPHPを動かす2つの方法

suin2011年3月20日

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でやってもいいんだけどね。

RELATED POSTS