定期的に自動でプログラムを実行させる方法(PHPを例に)

web上の定例業務は機械に任せよう。

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時に自動更新したい」なんていうのは普通にありそうですよね。

コメント

タイトルとURLをコピーしました