FC2ブログ

Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://satake7.blog33.fc2.com/tb.php/16-9e0bed50

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

ChangeLog 0.7.1.1

通販Go!Go!(2.5-55.jp) ChangeLog 0.7.1.1

通販Go!Go! 0.7.1.1

  1. 調査ロジックの大幅修正
いままでは、対象となるURLのリストを作ったら、それを1つずつ読んでいって第1ステップの結果をすべてHashに保存し、第1ステップがすべて終わったら第2ステップにいくというようなやり方をしていました。
どうしてそういうやり方をしていたかというと、すでに解析したショップ情報や商品個別情報は保持しておいて、なるべく無駄足を踏まないようにした方が効率的だと考えたからです。確かにURLをリードするのが一番時間のかかるステップですから、一度読んだURLであれば読まないというのは有効なのですが、そうするためには対象すべての処理が済まないと次のステップへ進めないということになります。
この方式でやる欠点としては、せっかく作業中の進捗を管理しているのに、すべてが同時に進んでいきますから全体として「まだ」か「終わった」の2つの状態しかとりえないことと、forkで並行処理がしづらいことです。
各ステップごとのURL処理ごとに fork させるなり、Thread を立てるなりすればいいのですが、結局すべての子プロセスが終わらないと次のステップへ行けないという構造は一緒ですし、子プロセスごとに書き込みタイミングが異なると、その時点で終わっているデータと比較して、やる、やらないを判断するようなロジックを入れることが難しくなり、結局、子プロセスすべての終了を待って、すべてをループさせて全体的な処理をするというような、あまり意味のないことをやらないといけません。

前振りが長くなりましたが、そうしたやり方ではスピード的に追いついていかなくなりましたので、このあたりの処理を大幅に書き直して、URLを読んだら、それを最後まで処理してしまうというやり方に変更しました。そうして、対象URLのリストからこれらの処理を次々と fork で子プロセスに任せて、本当の意味での並行処理ができるようになりました。
すでに処理したショップ情報や個別商品情報については、その都度、DBをリードして判断することにしました。URLをリードするよりDBのリードの方がはるかにコストがかかりませんから。
かなり大きな変更だったため、マイナーバージョンを1上げて、0.7 にしました。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://satake7.blog33.fc2.com/tb.php/16-9e0bed50

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

satake7

Author:satake7
 
Satake Studio, LPC(サタケスタジオ)は湘南秋谷でWEBアプリケーションの開発を行っています。

通販Go!Go!(http://2.5-55.jp)

最新コメント

最新トラックバック

検索フォーム

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。