フルスタックエンジニアのノウハウ
2021.06.12    2022.06.11

CRONとは?

この記事の動画版はこちら(画像クリックでYoutubeに飛びます)

チャンネル登録お願いします!


CRONとは?


結論から先に言うと


CRONというのは、プログラムを定期的に自動実行させる仕組みです。


Webプログラムは基本的に、ユーザーの操作を起点として動作します。


例えば、


・ブラウザからページにアクセスされたタイミングでこの処理を行う。
・画面内に設置されたボタンが押されたタイミングでこの処理を行う。


といった感じですね。


つまり、ユーザーが何らかの操作を行ってくれないとプログラムは動くことができない訳です。


なお、JavaScriptを使ってユーザーの操作のタイミングとは別にプログラムを実行することは出来ますが、これもあくまでユーザーがそのページをブラウザで開いていることが前提になってしまいます。


しかし、ユーザーがページを開いていなくても、指定した時間になったらバックグラウンドでメール配信処理を行ったり、時間がかかる重い処理などをアクセスの少ない夜中に自動実行したり、定期的にデータのバックアップ処理を実行したりなど、ユーザーの操作を起点とせずに、バックグラウンドで処理を自動実行させたい場合もあります。


そんな時に使うのが「CRON」という仕組みです。


CRONは、サーバーが持つ機能の1つで「指定した時間」に「指定したプログラムを自動実行」してくれる仕組みです。


自分が作成したプログラムをCRONに登録しておけば、指定した時間になったら、そのプログラムを自動的に実行してくれるという訳です。


CRONの実行タイミングは


・X月X日X時X分に実行
・毎月1日のPM12時に実行
・毎週月曜のAM8時に実行
・毎時0分に実行


といったように、柔軟なスケジュール指定が可能です。



CRONの設定方法


CRONはサーバーが持つ機能ですので、サーバー上で設定を行います。


CRONに対応しているレンタルサーバーであれば、管理画面から簡単に設定することが出来ます。


例えば、さくらインターネットの場合は、「スクリプト設定」から「CRON設定」をクリックするとCRONの設定画面が表示されます。




新しくCRONを登録する場合は、「スケジュール追加」をクリックし




ここに実行したい「月」「日」「時」「分」「曜日」を指定します。


例えば、毎時0分に実行したい場合は


・「月」「日」「時」は全てを意味する「*」を指定
・「分」に「0」を指定
・「曜日」は全てにチェック



このように指定します。


次に、「実行コマンド」の部分に、実行させたいプログラムを指定します。


PHPのプログラムを実行する場合は、まず先頭にPHP本体のパスを指定します。



PHP本体のパスは、サーバーごとに異なりますので、サーバーの管理画面から確認するようにしましょう。


さくらインターネットの場合は「/usr/local/bin/php」になります。


次に、半角スペースで区切って、実行するPHPファイルのパスを指定します。


例えば、/home/webというフォルダの中にあるtest.phpを実行したい場合はこのように指定します。



最後に「保存」ボタンを押せばCRONの登録は完了です。


なお、レンタルサーバーの場合はプランによってはCRONに対応していなかったり、CRONの設定数に上限があったりしますので、設定が自由に行えるクラウドサーバーがおすすめです。


クラウドサーバーの場合は、上限なくCRONを設定することが出来ます。


レンタルサーバーとクラウドサーバーの選び方については、こちらの記事も参考にしてみてください。

関連記事

レンタルサーバー VS クラウドサーバーどっちがいいの?



クラウドサーバーでCRONを設定するには、ターミナルでサーバーに接続後「crontab」というコマンドを使って行います。



crontabコマンドに「-l」オプションを付けると、現在登録されているCRONの一覧を確認することができます。




新しくCRONを登録したり、登録済みのCRONを編集したい場合は「-e」オプションを付けて実行します。


CRONは、このような書式で分、時、日、月、曜日、実行プログラムの順に、それぞれ半角スペースで区切って1行に付き1設定を記述していきます。



より詳細な指定方法については、「crontab」というキーワードで検索すると多くのページが見つかりますので、興味があれば是非調べてみてくださいね。



CRONの活用例


CRONを使うことで、例えば


・メールマガジンの自動配信システム
・指定した時間に通知を行うようなリマインダーアプリ
・BOTのような自動投稿を行うプログラム
・自動バックアップやデータの自動集計を行うプログラム


など、多くの「自動化プログラム」を作れるようになります。


例えば僕は、フォローが必要な講座受講生さんを定期的に自動でリストアップして、自分にメールで知らせるようにしたり、Webサイトの日々のアクセス数や、SNSのリアクション、売上データなどから独自のレポートを自動集計したり、運営している各種WebサイトやWebサービスが正常に稼働しているかどうかを自動的にチェックさせたりなど、業務の中でCRONをかなり活用しています。


CRONを使いこなせば、一度作ったプログラムを反復的に自動実行させ、本来自分が行う業務をプログラムにやらせて自動化することが出来ます。


また、CRONを使うことで、作れるアプリ(機能)の幅が広がりますので、是非自分のスキルに取り入れてみてくださいね。



まとめ


・CRONとは「プログラムを定期的に自動実行させる仕組み」
・指定した日時にバックグラウンドで自動実行させることが出来る
・レンタルサーバーでも対応していることが多い
・ターミナルで設定する際は「crontab」コマンドを使う
・CRONを使うことで、作れるアプリ(機能)の幅が広がる


おすすめ記事