さくらインターネットでCRONを用いてシェルスクリプトを実行し、SQL文でバッチ処理を行う方法(MySQL)
自分の作ったMySQLのデータベースに対して、定期的(一日一回、など)にSQLクエリを実行したい、という場合があると思います。 ランキングサイトを作っている場合や、スコア計算などを行う必要がある場合などです。 年度や年が変わったときにSQLクエリを実行して再計算をしたい場合なども考えられます。
ここではCRONという自動実行プロセスを用いた方法を紹介します。 さくらインターネットではスタンダードプランからCRONが使えます。
まず、cron.shというファイルを作ります。 (名前は .sh という拡張子ならなんでもいいです)
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
最初の2行はこのように書いて下さい。 そのあと、MySQLにログインするコマンドを書きます。
以下のようになります。
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin mysql -u ユーザ名 -h ホスト名 -pデータベースパスワード(pのあとに空白は空けない) --default-character-set=utf8 << EOF use データベース名; SQLクエリ文1; SQLクエリ文2; SQLクエリ文3; SQLクエリ文4; EOF
最後にSQLクエリ文をかきましょう。; を忘れないで下さい。 クエリは実行する順番に何個でも書けます。
一番最後に EOF と記述し、スクリプトの記述を終了します。
これを wwwと同列の階層にアップロードします。 アップロードしたら、『ファイルのパーミッション設定』(FileZillaなら右クリック) で、「数値」の部分を700に設定しましょう。
そして、「さくらインターネットコントロールパネル」→「アプリケーションの設定」の 中にある【CRONの設定】を選びます。
CRON設定一覧の右下にある >>新規項目の追加 をクリックして、実行するシェルファイルを設定します。
『実行コマンド』は
sh /home/ドメイン名/cron.sh
と入力しましょう。cron.shが、実行するシェルスクリプトファイルです。
あとは、実行日時を入力します。 『送信』を押して、実行できるか確認してみましょう。
(データベースのテーブルをエクスポートしてバックアップをとり、 テストをしてみることをオススメします。 もしくは適当なカラムを追加して そのカラムのみ変更をしてみましょう。)
これで、任意の時間にMySQLのクエリ文をデータベースで実行して、様々なバッチ処理をすることができます。
以上です。