LoginSignup
25
36

More than 3 years have passed since last update.

バッチ処理とcronの書き方について解説!

Last updated at Posted at 2019-06-23

はじめに

  • バッチ処理と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
こんにちは
こんにちは
こんにちは
こんにちは
25
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
36