webアプリを運営していて、定期的にプログラムを実行して更新したい場合があると思います。
結構簡単です。
簡単な割に覚えるとサービスの可能性が広がりますので、ぜひ習得してください。
目的(私の実例にて)
どこ旅というwebアプリで「為替データを1時間ごとに更新したい」という希望がありました。
為替データをjson形式で公開しているとある会社のサービスがあり、拾ってきたデータを自分のデータベース(MySQL)に書き込むというプログラムをPHPで作るとこまでできているとします。
そのプログラム(「https://〇〇〇.com/update.php」)に手動でアクセスすると、為替データの更新が完了します。
この作業を自動化させたいというのが今回の目的です。
環境
言語:PHP
サーバー:ロリポップ
自動アクセスの方法
プログラムを作成する
先ほどの私の実例にて詳細は省略します。
自動を意識するとよく分からなくなってしまうので、手動でアクセスして更新が成功するシステムを作ればOKです。
cron設定
ここからが本題です。
プログラムへの自動アクセスはcronというものを使用します。
【cronとは?】
指定した日時、曜日に特定のプログラムを起動するUNIXのデーモン。システムの起動時にrcファイルから実行された後、crontabファイルの設定内容に従って、システム管理に必要な定例的な作業を行なう。一般的には、定時に行うシステムの診断、アカウントログファイルの整理、エディタのテンポラリファイルの処理、一定時間を経過したcoreファイルの削除、ユーザーの使用状況の調査などに利用される。
(出典:コトバンク)
要は、「クローンさんがあなたの代わりに決まった時間に働くよ!」という感じで難しく考える必要はありません。
というわけで、設定方法。
ロリポップの場合は、
マイページ→サーバーの管理・設定→cron設定
にアクセスします。
他のサーバーでも同じような感じだと思います(そもそもcronに対応していないサーバーでは不可ですが、多くのレンタルサーバーでcronは使えます)。
あとは入力欄を埋めていくだけです。
入力欄も全然難しくないので、説明する必要はほとんどないと思いますが…、一応。。。
cronの設定名
自分用なので、なんでも構いません。
複数設定した場合に、後から自分で見たときに分かる名前がいいでしょう。
日付(月)
一番大きい単位です。
毎時希望であれば「毎月」を選択します。
例えば、「1月1日の0時に自動更新したい」ときには「1月」を選択しましょう。
日付(日)
これも、毎時希望であれば「毎日」を選択します。
あとから解説しますが、「月曜だけ」の時であればここでは暫定で「毎日」を選択します。
曜日
毎時希望であれば「毎日」を選択します。
決まった曜日だけであれば、希望する曜日を選択します。
時間(時)
毎時希望であれば「毎時」を選択します。
1日1回であれば、希望の時間を選択します。
時間(分)
毎時希望であれば、実行したい分を選択します。
特に希望がなければ0分でいいと思います。
5分毎や10分毎という単位を選択することも可能です。
実行ファイルパス
ここが一番悩むと思います。
しかし、シンプルに考えて大丈夫です。
独自ドメイン設定で設定した「公開(アップロード)フォルダ」を最下層として入力します。
例えば、sample.comというドメインに対して「sample」というフォルダを「公開(アップロード)フォルダ」に設定していたとします。
そして、今回作成した自動で動かしたいphpファイル(例:auto.php)が、
「sample」フォルダの中にある「auto」というフォルダに「auto.php」が入っているとするのならば、入力する内容は
sample/auto/auto.php
になります。
設定ボタンを押したら設定は完了です。
以上。
とっても簡単です。
あとは、cronが動いてくれる時を待ち、結果が問題ないようであれば以降は自動となります。
まとめ
自動化は様々な可能性を広げてくれます。
決して手間の削減だけではありません。
知識を持つことによってアイディアも広がると思いますので、積極的に導入して面白いサービスを作ってみましょう!
例にも出しましたが、毎時でなくても、「1月1日の0時に自動更新したい」なんていうのは普通にありそうですよね。
コメント