はじめに
- バッチ処理とcronの書き方について本やネットの情報から調べて理解したことをまとめました。
- もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。
バッチ処理とは
バッチ処理とは、一定の時間に対象のデータをまとめて処理することです。
バッチ処理の具体例
- 毎朝今日の天気を知らせるメールを送る
- 毎日その日の終わりに売上の集計を行う
- 毎日決まった時間にTwitterでツイートする
バッチ処理の流れ
大まかな流れは以下になります。
- 1.実行のタイミング
- トリガー起動
- 前提となる処理が完了したときに開始するもの
- 時間起動
- 毎日0時や5分毎になど、決まった時間に開始するもの
- トリガー起動
- 2.処理の実行
- 3.バッチ処理終了時に成功、失敗のログを出力
cronとは
- 定期的に自動で処理を実行させるプログラムです。
- 「1分毎に〇〇の処理を実行する」「毎日0時に〇〇の処理をする」など、設定した時間に自動でコマンドを実行することができます。
cronの設定方法
「crontabコマンド」を使って、cronに実行したいコマンドを設定することができます。
crontabコマンドの書き方は以下になります。
crontab [オプション]
オプションの設定は以下になります。
-
-e
:cron設定を編集・登録 -
-l
:cronの設定を表示 -
-r
:cron設定を削除 -
-u
:cronを設定するユーザーを指定
cronの書き方
-
crontab -e
でcronを設定、編集することができます。 - 実行時間は、左から分・時・日・月・曜日を指定します。また、それぞれに半角スペースを空けます。
分 時 日 月 曜日 [コマンド/プログラムファイル名]
設定は以下のようになります。
-
分
:0~59で設定 -
時
:0~23で設定 -
日
:1~31で設定 -
月
:1~12で設定。または jan〜dec -
曜日
:0~7で設定。0=日曜,1=月曜,2=火曜,3=水曜,4=木曜,5=金曜,6=土曜,7=日曜。または sun〜sat -
,
:分,時,日を複数で指定 -
–
:分,時,日を範囲で指定 -
/
:分,時,日を間隔で指定 -
*
:「全て」を表します
cronのコード例
cronで以下のような処理を実行させるプログラムを書きます。
処理の内容
- 一分毎に
こんにちは
という文字列をtext.txt
ファイルに書き込んでいくプログラム
準備
以下の設定で進めていきます。
開発環境
- Mac
- MAMP
ファイルの構造
- MAMP/htdocs/cron
- cron.php
- text.txt
cron.php
- 文字列をファイルに書き込む
file_put_contents関数
を使っていきます。 - cronで処理を実行する場合、ファイルパスは
絶対パス
で記述する必要があります。
cron.php
<?php
$file = "/Applications/MAMP/htdocs/cron/text.txt";
$text = "こんにちは" . "\n";
file_put_contents($file, $text, FILE_APPEND);
cronの設定
ターミナルでcrontab -e
コマンドを入力すると、viが立ち上がると思うので、cronを設定します。
パスは絶対パス
で記述する必要があります。
cronを設定
*/1 * * * * /usr/bin/php /Applications/MAMP/htdocs/cron/cron.php
実行結果
一分毎にこんにちは
という文字列が書き込まれていきます。
text.txt
こんにちは
こんにちは
こんにちは
こんにちは