作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

【連載】Webサービス制作日記#07 cronでスケジュール実行


スポンサードサーチ検索ツールには、リアルタイムに検索できる機能だけではなくて、過去のデータを遡って表示したり時系列グラフ表示する機能をつけます。
そのためには、過去の順位情報を残しておかなければなりません。
毎日定期的に順位データを自動で取ってきてデータを保存するために、スケジュール実行の仕組みが必要になります。

201010092047.jpg
 

cronは定番のスケジューラ

スケジューリングのツールとして、cronを使います。
シェルスクリプトなどのプログラムを指定した時刻に実行できますが、このための時刻設定は一般的にはUnixのコマンドラインから行います。
しかし、多くのレンタルサーバは管理コンソール画面からスケジュール実行の設定が出来るようになっています。
管理コンソール経由でcronを制御してくれるような仕組みを備えていることが多いので、わざわざコマンドラインから時刻の設定を行わなくても良い場合が多いと思います。
 
例えばお名前.comレンタルサーバの管理コンソールのcron設定はこんな感じです。
 
201010091944.jpg
 
スケジュール実行で動作させるプログラムは、Webアプリケーションと違って表示させる画面は無く、DBに結果データを保存させるだけの機能があればいいです。
したがってWebアプリケーションと言語を合わせる必要はないので、別にPHPで作らなくても構いません。
コマンドラインから実行させるスクリプトは、一般的にはPerlなどで作る場合が多いんじゃないかと思いますが、PHPでもコマンドライン実行はできます。
 
CakePHPには、コマンドラインから実行できる環境も含まれており、これを使うとWebアプリケーションで使っているクラスやライブラリがそのまま利用出来るので便利です。
また、HTMLパーサも同様にPHPのものを使いたいので、コンソールアプリケーションもPHPで作ることにします。
 
CakePHPで
/var/www/app/vendors/shells/ycrawler.php
という名前でファイルを作った場合、以下のコマンドで実行できます。
 
[php]
/var/www/cake/console/cake ycrawler -app /var/www/app
[/php]
 
[参考]CakePHP コンソール :: CakePHPによる開発 :: マニュアル :: 1.3コレクション :: The Cookbook
http://book.cakephp.org/ja/view/1106/The-CakePHP-Console
 
 

保存するテーブルのレイアウト

1回のYahoo検索で複数のドメインについての順位を調べられますので、図にすると以下のような関係になります。
 
201010092030.jpg
 
調べたいドメインの数はいくつであっても柔軟に対応できるようにしたいので、テーブルは以下のようにキーワード用のテーブルとドメイン用のテーブルの2つに分けます。
順位は検索結果画面中央部分に表示される場合の順位なのか、画面右側に表示される順位なのかを区別できるように2列用意しています。
 
201010092025.jpg
 
 
 
過去のエントリ
【連載】Webサービス制作日記#06 jQueryでAjaxする
【連載】Webサービス制作日記#05 HTMLパーサを使う
【連載】Webサービス制作日記#04 データベースを使う
【連載】Webサービス制作日記#03 プラットフォームを決める
【連載】Webサービス制作日記#02 要件を決める
【連載】Webサービス制作日記#01 何を作ろうとしているか

関連記事


【連載】Webサービス制作日記#09 CakePHPのデータベースアクセスは便利
CakePHPは、PHPの開発でよく使う機能や方法論をフレームワークという形であらかじめ用意してくれていますので、1からPHPでコードを書く必要が無いことが多いです。 データベースへのアクセスは通常はSQLを使いますが、 …

【連載】Webサービス制作日記#08 グラフ描画ツールを使う
グラフ描画ツールとして、jqPlotを使うことにします。 jqPlotは、jQueryのプラグインとして動作します。     javascriptのグラフ描画ツールは最近かなり充実してきている感じがします。jQueryは …

【連載】Webサービス制作日記#06 jQueryでAjaxする
スポンサードサーチ検索ツールは、一度に複数の検索を実行出来るようにしています。 ユーザがあらかじめ設定しておいた複数のキーワードごとに、一度に検索を実行して現在順位をYahooからとってきて一度に表示します。 しかしここ …

【連載】Webサービス制作日記#05 HTMLパーサを使う
順位検索ツールの処理フロー スポンサードサーチ順位検索ツールは、以下のようなデータのやりとりをすることになります。     ユーザからのリクエストをWebサーバで受けたら、それをトリガにしてYahooに検索に行きます。 …

【連載】Webサービス制作日記#03 プラットフォームを決める
どのツールを使って作るかを決めます。 一度使うと決めたツールは、あとから変えたいと思ってもなかなか変えられないことが多いので、ここはよく考える必要があります。   どの言語を使うか? プラットフォームは? 例えばプログラ …

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です