レンタルサーバー(主に共用タイプ)では、ユーザーの常駐プログラムの利用は禁止されています。常駐プログラム(デーモンやサービスとも)は、その名の通りサーバー上で起動し続けるプログラムのことです。
レンタルサーバーでも、VPSや専用サーバーといったルート権限のあるサービスであれば常駐プログラムの利用は可能です。
レンタルサーバーで自動的に定期的または特定の日時に処理を行わせたい場合、どのような方法があるでしょう?
例えば、何らかの集計処理(ランキングなど)や製品情報の更新、メールの配信を自動的に行わせたい時です。
簡単に思いつくのはタイマーアプリケーションを常時起動させておく方法です。そのアプリケーションが特定の時刻に必要な処理を呼び出すことで実現できます。常駐プログラムを禁止しているレンタルサーバーでは、この方法が利用できません。
もう一つの方法は、更新用のスクリプト(例:http://example.jp/update.php)に、自宅のサーバーからアクセスする方法です。常時サーバーを立ち上げておく必要がありますが、よく用いられる手法です。ただし、そのスクリプトにアクセス制限等の対策を行わないとセキュリティ的な不安があります。
このような時に利用するのが、Cron(Unix系)、タスクスケジューラ(Windows)、Launchd(Mac)という仕組みです。
上記のタイマーアプリケーションのようなプログラムです。特定の日時や間隔で指定したプログラムを呼び出すたことができます。
設定方法はレンタルサーバーにより様々ですが、設定できる内容に変わりはありません。例えば、ロリポップ!だと下の図のように、時刻や間隔をプルダウンから選択するだけです。この設定であれば、5分間隔でupdate.phpというスクリプトを呼び出すことになります。
レンタルサーバー(やプラン)により大きく異なるのは、Cronの設定数や最短間隔です。例えば、ロリポップ!のロリポプランであれば、5個まで設定でき、最短間隔は5分となっています。ミニバードであれば、設定数は同じですが最短間隔は20分となります。もし、20分未満間隔の処理を必要とするならミニバードは選択肢から外れます。
探してみると低価格帯でも設定数の制限がなく1分間隔で実行可能なレンタルサーバーもあります。レンタルサーバーの性能は料金なりですが、Cronにだけ利用するのもレンタルサーバーの使い方の1つです。
Cronは便利そうに見えますが、レンタルサーバーなりの制限があります。設定数の上限や最短間隔は最たるものですが、他にも長時間の処理や高負荷の処理はNGとなっています。ここのさじ加減はレンタルサーバーによってバラバラとなっており、負荷を掛けすぎると強制的に処理が停止させられます。
長い時間を必要とする処理は、分割することで対応できます。また高負荷の処理も同様です。ただし最短間隔はどうにもならないので、もしCronを重要視するなら仕様をしっかりと確認しましょう。