cronとは、自動で(一定時間・一艇頻度などで)、特定のコマンドやshellスクリプトなどを実行する機能です。例えば一日に一度(アクセスの少ない時間帯=人が普通寝ている時間などに)、データベースのバックアップを取ったり、アクセスログをビジュアル化したHTMLを自動生成させることなどもできます。人間が寝ていても、どこかに出かけていても、勝手にやってくれます。とっても便利です。 ただ、cronは、一般的に負荷がかかるため、利用できないようになっているレンタルサーバ(このページでは、「共有サーバ」の意味。)が多いのが実情です。また、利用者が設定ミスをしたり、過剰に設定する(例えば1分おきに実行させるなどの暴走的利用法)とサーバ全体がこけてしまう場合があることも大きな理由です。 そんな中で、cronが利用可能になっている貴重なレンタルサーバはこちらのページにまとめましたが、不幸にもcronの利用が許可されていない環境下で、cronと同じことをやりたい場合の代替手段について、いくつか案をご紹介します。(どのような環境下でも動作することを保証するものではありません。) |
1.基本的な考え方シェルスクリプトをcronを使って実行させることが不可能といっても、それはサーバの機能であるcronを使って実行できないというだけであって、そのシェルスクリプト自体はいつでも実行可能なわけです。ただ、「自動」でというところで、サーバの機能を使えないということです。サーバがやってくれないのであれば、他の手段で実行することができれば問題解決となります。下準備として、そのシェルスクリプトをPHPのSystem関数から実行させることができるPHPプログラムを準備します。(System関数の使用は、セーフモードの環境下では制限されますので、そのような場合はこの方法は無理かもしれません。System関数の利用法はPHPのマニュアルをご参照ください。) そのPHPプログラム(URL。例:http://www.example.com/php/db_backup.php)に自動でアクセスする方法を考えればいいことになります。ここでは、4つの方法を紹介します。このページで紹介します「Windowsのタスクスケジューラ機能を使用する方法」と、次のページ以降で紹介する「一般サイト訪問者のアクセスがトリガーになるようにする方法」「フリーソフトを利用する方法」「MacOSXのUNIXコマンドを利用する」の4つです。 2.Windowsのタスクスケジューラ機能を使用する特定URLにアクセスするVBScriptを作成し、そのVBScriptをタスクスケジューラで実行させるようにします。
VBScriptのソースは最も簡単に書けば、 のようになるはずです(もちろん、GoogleのURLではなく実際には別のURLをセットします)。しかし、これだと、ネットで調べ物をしている最中に、このタスクが割り込み、その該当URLが表示されたり、逆に、タスクが実行されその該当URLにアクセス中に、人間が別のURLの表示要求を出してしまうかもしれないため、結果的にタスクが実行されないことになります。そこで、IEユーザーの場合は、VBScriptでは敢えてFirefoxを起動するようにします。 Firefoxのインストールパスは人によって違うと思いますが、ここでは最も一般的なパスで指定してあります。 同様に、Firefoxを普段使っているユーザーが、VBScriptでIEを起動させ、タスクを実行させたい場合は、IEが起動するようにしていると、いろいろ問題がありますので、 のようにすればいいことになるでしょう。この例では、これをgoogle.vbsとして保存したことにして、以下、話を進めます。このgoogle.vbsをタスクスケジューラによって自動実行させれば良いのですが、その手順は以下の通りです。
機能充実(cron/ssh/ImageMagick/GD)のレンタルサーバです。
ただ、正直、このやり方は、パソコンが起動していないといけないという根本的な問題があります。自分のパソコンを起動させていなくても、勝手に自動処理がされるような仕組みはないものでしょうか? 続いて、一般のサイト訪問者にその自動処理の一端を任せてしまう方法(もちろん、一般のサイト訪問者は普通にページを見ているだけです。)についてご紹介します。 |