crontab を使用して PHP ファイルを実行するにはどうすればよいでしょうか?

crontab を使用して PHP ファイルを実行するにはどうすればよいでしょうか?

私は Lamp で Ubuntu をセットアップしていますが、毎日午前 2 時に PHP ページを開始するには何を入力すればよいか疑問に思っています。crontab の動作をまだ勉強中なので、どれが機能するかをテストすることはできません。

では、このような場合、パラメータ付きの PHP ページにどのように配置すればよいでしょうか?

30 18 * * * http://myip/mypage.php?action=do_something

このように入力するのでしょうか、それとも絶対パスで入力するのでしょうか?このように

30 18 * * * /var/www/mypage.php?action=do_something

答え1

間違いなく方法1を使うべきです。

30 18 * * * wget -O - -q -t http://myip/mypage.php?action=do_something

これにより、通常の Web ルートを介して wget (ファイル ダウンロード プログラム) でファイルが取得されます。つまり、Apache がリクエストを処理すると、php がそのスクリプトを解釈し、スクリプトが実行されることになります。

php-cli アプリケーションを呼び出してスクリプトへのパスを引数として渡す方法 2 を使用してこれを実行することもできると確信していますが、ほとんどの場合、それによって実際に違いが生じることはありません。

答え2

cron に配置するコマンドは、php ファイルが実際にどのように記述されているかによって異なります。ファイルが Web サーバーのスクリプトである場合は、前述のように wget が適切に機能します。上記のコマンドで、-O は出力がファイルに書き込まれることを意味し、-q は出力を抑制し、-t は再試行回数を制限することを意味します。

ただし、php スクリプトがシェル スクリプトの場合、wget は役に立ちません。その場合、ファイルは実行可能である必要があり、cron コマンドは次のようになります。

30 18 * * * /usr/bin/env php /path/to/script

関連情報