Welcome to Cut-And-Try Geeklog 2013-05-19 (日) 16:27
MyMiniCity表示用PHPブロック関数
- 2008-01-01 (火) 17:47
- Contributed by: dengen
最近、テクノラティで「MyMiniCity」というWebサービスを知り、試しに始めてみた。
MyMiniCityのホームページにいって、街の名前と国を選択するだけであっという間に自分の街が作れてしまった。
自分も含めて誰かにその街のサイトにアクセスしてもらうと、街がだんだん発展していく仕組みになっている。
私の街は、なかなか成長しないとだろうと思うけど、ちょくちょく見に行くたびにすこしづつ成長しているのがやはりうれしい。
となると、MyMiniCityを自分のサイトに貼り付けて、眺めてみたりしたくなるのは人情というもの。
誰かが作ってくれていないかググってみたら、やっぱりあった!(MyMiniCityはじめました - The blog of H.Fujimoto)
ありがたく、このCGIを利用させていただいたのだけど、うちのヘボサーバには少し重たい気が・・・。
もしかすると、同じ事をGeeklogにあわせてPHPでやらせると少しは軽くなるかもしれないと思い、CGIのPHPへの移植を試みた。
CGIを調べてみると、HTTPリクエストでMyMiniCityのサイトを取得し、その内部のパラメータを得て、Flashアプリを起動するためのembed要素を出力するJavaScriptコードを出力するという、文章にするとかなり複雑な仕組みになっていた。
この処理をPHPコードに書き改めれば、Geeklogの場合これをPHPブロック関数にして、JavaScriptを使わずにembed要素をサイトに埋め込める。 私はHTTPリクエストを利用したことはなかったので、勉強がてらやってみたところ、結果的にうまくサイト内にMyMiniCityを表示できるようになった。 PerlとJavaScriptの起動にかかるオーバーヘッドがあるはずなので、PHPに統一できた分すこしだけ速くなったはずだ。(体感的にはあまり変わらないけど)
うまく、PHPブロック関数にまとめることができたので公開してしまおう。この成果はこのサイトのダウンロードセクションにアップしたのでGeeklogユーザ&MyMiniCityユーザの方にお試しいただきたい。
Trackback
Trackback URL for this entry:
http://www.trybase.com/~dengen/log/trackback.php/MyminicityViewerFunction_ja
No trackback comments for this entry.
The following comments are owned by whomever posted them. This site is not responsible for what they say.
$display = '<object id="client" name="client" type="application/x-shockwave-flash" '
. 'style="background-color: #deecfe;" '
. 'width="' . $myminicity_width . '" height="' . $height . '" '
. 'data="http://data.myminicity.com/swf/client.swf?v=0">'
. '<param name="movie" value="http://data.myminicity.com/swf/client.swf?v=0"' . XHTML . '>'
. '<param name="flashvars" value=' . $param . XHTML . '>'
. '<param name="allowscriptaccess" value="always"' . XHTML . '>'
. '<param name="menu" value="false"' . XHTML . '>'
. '<param name="quality" value="high"' . XHTML . '>'
. '</object>'
. '<p><a href="' . $url . '">'
. htmlspecialchars($myminicity_message, ENT_QUOTES, $LANG_CHARSET)
. '</a></p>' . LB;
embed要素は、ブラウザの独自拡張だということは知ってたんですが、object要素をまだ使ったことがなくて、ぼちぼちやろうと考えてたんです^^;
mystral-kkさんのコードを丸ごと使って、バージョンアップさせていただきます。(ラッキー!)
今の版は、まだ改善の余地がありまして、1つはxmlフィードがせっかく提供されているので、これを有効に活用しようと考えています。
xmlフィードでパラメータが取得できるので、パラメータの変更があったときだけ、MyMiniCityのサイトを取得し、それ以外は、あらかじめキャッシュしたデータを見に行って済まそうというもので、ここまでは出来上がってます。
もう1つは、MyMiniCityはある程度人口が増えると、ほかのURLにアクセス必要があるらしくて、その辺の対応を考えています。
ここまでできたら、Geeklog.jpで公開しょうかな。
前もって、mystral-kkさんにチェックしてもらえると助かります^^