まとめアンテナサイト

画像掲示板の泉には「まとめサイト」を更にまとめた、アンテナサイトの機能をオマケで付けてありますが、まとめサイトからRSSデータを収集してDB更新をするプログラムを長らくメンテナンスしていなかったので、久しぶりにこれを修正してみました。

まとめアンテナとは

アンテナサイト」をご存知ない方はこちらの泉アンテナをご覧いただければ似たようなサイトを見たことあるのではないでしょうか。2ちゃんねるやツイッターなどをまとめた「まとめサイト」を更にまとめたRSSリーダーのようなサイトがアンテナサイトになります。

画像掲示板の泉にはまとめアンテナコーナーがあります
画像掲示板の泉にオマケで付けてある泉アンテナです

アンテナサイトの作り方は色々あると思いますが、泉アンテナの場合はこのような感じで作ってあります。

アンテナサイトの作り方

  1. PHPで複数のまとめサイトからRSSを読み込む
  2. 取得した記事情報は全てDBにためこむ
  3. 日時順に新しいものから表示する
  4. 記事のクリック数もカウントを取りランキングで表示

今時、アンテナサイトの作り方に興味がある人はいないと思いますが、もし興味がある方がいらっしゃいましたら、コメントかTwitterで一言ご要望ください。まとめサイト側RSSをパースしてDBに取り込み日時順に出力をして記事一覧を更新といった処理のサンプルコードをご紹介したいと思います。

取得したデータ件数

まとめサイト側RSSの記事公開時間をみていると、頑張っているところだと30分に一回くらいは新しいまとめ記事がでていたりするので、上記1のRSS取得を1時間に一回クロールするだけでも、結構な数の新着記事を収集することができます。

アンテナサイトの作り方に書いた1~4はcronですべて自動化ができるので、泉アンテナでもcronでバッチ処理化をして放置しておりましたが、ログを見ると2016-01-17 23:15:38からはじまって、今日の時点で791,446 件もの記事データがDBにたまっておりました。今日までの1,457日間を休まず動いていたと考えると、日に543件も記事を集めていたようです。こんな数のまとめ記事を作っているまとめサイト運営者さんのパワーは凄いものを感じますね。。

PHP処理時間の制限

この更新プログラムをメンテナンスするということで、新たにRSS取得先を増やしたり、減らしたりしてみましたが、配信先情報をマスターにセットしてバッチプログラムをブラウザで走らせてみたところ、504 gateway time-out nginxが表示されてしまいました。

まとめサイトのRSS取得に時間がかかるので504 Gateway Time-outとなる
nginxが504 gateway time-outを吐き出す

雰囲気的に処理時間が長すぎて、php.iniのmax_execution_timeあたりに引っかかった感じですが、RSS取得先の数を3~4サイト増やした程度ですので、この様子からすると、これまでもバッチ処理は尻切れトンボ状態になっていたのかもしれません。

まとめサイト別処理時間

試しに、1サイト毎に走らせてみたところ、このような感じになりました。

サイト処理時間
サイト16s
サイト2 9s
サイト310s
サイト49s
サイト512s
サイト69s
サイト725s
サイト89s
サイト99s
サイト1013s
サイト113s
サイト122s
サイト1323s
サイト142s
サイト1523s
サイト169s
サイト1724s
サイト186s
サイト198s
サイト2010s
サイト2130s
サイト2224s
サイト2323s
サイト2413s
サイト2522s
サイト267s
サイト276s
サイト2824s
サイト296s
サイト3013s
サイト別でみたPHP処理時間

総処理時間と解決策

多少時間のかかるサイトもありますが、RSSを丸っと読み込んでDB更新をかけて出力用HTMLを更新までやってこのレベルなら問題なさそうですが、30サイト全部を合わせると389秒ということで、7分近くは走ることにはなるので、チリも積もればなんとやらという感じで、この処理時間の長さはさすがに問題ありそうです。

仕事であれば、バッチ処理をチューニングといった感じになりそうですが、さくらサーバでcronを5個以上追加する方法を以前書いたように、cronは多少は設置が可能そうですので、RSS取得の処理を15サイト毎の2本に分け、合わせて、これまでセットにしていた記事情報の出力処理も別処理として、3バッチにしたところ、問題なく定時処理をさせることができました。

おわりに

もともとは、画像掲示板があまりにも過疎っていて書き込みが増えないので、オマケで付けたアンテナサイト機能でしたが、最近はこのアンテナ部分を見る方が楽しくなってしまいました。残念な感じです。

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手サイトは全てサービスを終了し、中小でも運営を継続するところがほとんどなくなってしまったディレクトリ型検索エンジンを2002年から細々運営しており、未だに細かい機能改修も行っております。申請されたサイトは実際に訪問して細かく確認をしているので登録までかなりお時間いただきます。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載しています。
  • 画像掲示板の泉画像やYouTubeやニコニコ動画が貼り付け可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitter(ツイッター)のトレンドワードや人気ハッシュタグデータを月別に集計してランキング形式で公開しています。
  • Keyword Tool++Yahoo APIや楽天サイトのデータを日次で収集したデータを元に、EC系キーワードをラインキング形式でご紹介しています。各ワードは検索ボリュームや関連語、24か月の検索ボリュームトレンドを確認も可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能なサイトにしています。
  • TrendinGファッションモールに出店するブランドをアイテムヒット率でランキングとしたサイトです。まだβ版です。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォローどうぞ。