XREAでボトルネックになっている箇所を探したら

2008/05/11 | ケータイ

XREAで携帯向けコンテンツの提供を始めようとしているのだが、なぜか表示が遅い。すごく悩んでいたのだが、ようやく原因がわかった。原因は「携帯向けGoogle Adsense(PHP版)を貼り付けていること」だった。

最初は何が悪いのか全くわからなかった。とにかくリクエストから表示まで10秒くらいかかってしまう。どこがボトルネックになっているのか調べようとして、実際にやってみた作業はコレ。

スクリプトにやたらめったらprint(microtime(true));を記述

この記述がある回数だけ時刻が表示されるわけだが、その差が大きい部分を追うことで、実際にボトルネックになっている箇所を見つけるわけだ。で、追っかけてみた結果、Smartyテンプレート内で「include」している箇所で時間がかかっていることがわかった。「え〜なぜ?」と思いつつ、更に調べてみてincludeされているファイル内に記述されているGoogle Adsense携帯版の記述がボトルネックになっていることがわかった。

そこで「そういえばGoogle Adsense携帯版の実際に記述するコードが、最近やたら長くなったよな」と思い出したので、昔使っていたコードを入れてみた。そしたらなんと動作しない!。Google Adsense携帯版は以前は単にGoogleに配置されているファイルをrequireしているだけだったのだが、そもそもその記述自体がXREAでは許可されていないのだ。つまり「そういうこともあるからGoogle Adsense携帯版のスクリプトが長くなった」らしい。

ということで、副産物的にGoogle Adsense携帯版のことがわかったのだが、結局Google Adsense携帯版は、XREA環境ではどうやっても遅いのだ。仕方なく広告を削除した。

さて、改善されないのか・・・XREAにリクエストを出さねば・・・。

ZendFrameworkでサイトを作ってみた

2008/05/08 | Zend Framework

本を読んだり、資料をあさったりしていても、先へ進めないような気がしたので・・・。ZendFrameworkを使って、実際にサイトを構築してみた(「構築」というほどの大げさなものではないのだが)。コーディングに時間をとられたくなかったので携帯サイトにしてみた。

うちねこ

使用したのは以下の通り。
・Zend_Controller_Action
・Zend_View
・Zend_Db

本当はZend_FormやZend_Mailも使う予定だったのだが、期待通りの動作をしなかったり、早く公開したかったり、とか諸所の理由で最低限のライブラリ群を使用して構築・公開してみた(PEARや一般公開されているライブラリを使用した)。

なお携帯絵文字変換には以下のライブラリを使用した。
MobilePictogramConverter

実際に構築してみると「こんなことができる」「これはできなさそう」「これはバグ?」とか見えてきた。あとは自分なりに使いやすい構成をとれるよう、使い込んでいくだけだ。

Net_POP3でメールの削除ができない

2008/05/06 | その他PEAR全般

Zend_Mailでのメール受信がうまくいかない(場合がある)。一つのライブラリ群に固執するつもりもないのでPEARを使うことにした。PEARでメールを受信するといえば「Net_POP3」が代表的(かな)。受信はこんな感じ。

$pop =& new Net_POP3;
$pop->connect($host);
$result = $pop->login($userId, $password);
if (PEAR::isError($result)) {
  exit(‘Error’);
}else{
  foreach($i=0;$i&lt$pop->numMsg();$i++;){
    $message=$pop->getMsg($i+1);
    //$messageはヘッダ・本文含めて全部
    //処理内容
  }
}

で、メールの削除は処理内容のところで以下のようにすればいいはずなのだが。
$pop->deleteMsg($i+1);

消えない。なぜ?。
答えは簡単。接続終了を明示的に実行していなかったからだ。接続の最後に以下の1行を追加して無事削除することができた。

$pop->disconnect();

トランザクションのcommitみたいなものかな。

Zend_Mimeのバグ?

2008/05/04 | Zend Framework

現在Zend_Mail_Storage_Pop3を使ってメールの受信処理を書いている。しかし使っていくにしたがって、バグっぽい動きをすることがわかった。
添付ファイルつきのメールを受信する際の動作で例外が発生する。具体的にはmultipart/mixedなメールを読み取る際に、boundaryが読み取れる場合と読み取れない場合があるようだ。
boundaryを求める処理は、Zend_Mime_Decodeに処理が委譲され、その中でiconv_mime_decode_headersという関数で処理されているのだが・・・。
問題は「できる」場合と「できない」場合があるということなのだが、まだ原因がつかめない。
まだまだZendFrameworkにはバグが出てきそうだ。

Zend_Formでのファイルアップロード

2008/05/03 | Zend Framework

「ファイルのアップロード」と書いてはみたものの、実は調べたところ現状Zend_Formにはファイルをアップロードするための仕組みは用意されていない。ゆくゆくは機能追加されるとは思うのだが・・・。
HTTPによるファイルアップロード機能自体に、なんらかの仕様変更があるのではないかと推測している。PEARのHTML_QuickFormにはファイルのアップロード機能が用意されていた。しかしマニュアルによると「推奨しない」とか「将来削除される可能性がある」とか書かれていたりする(現在はHTML_QuickFormのアップデートは期待しないので、なくなることもないと思うけど)。推測しかできないので、余計な推測はこれ以上せず、当面は当該機能がある仕組みを使うのみだ。ちなみにHTML_QuickForm2(HTML_QuickFormのPHP5対応版)にはファイルアップロード機能が用意されているので、フォーム関連はこちらを使うことになると思う。

HTML_QuickFormにしてもZend_Formにしてもウェブを検索するとたいてい評判がよくない。たしかに癖のあるライブラリだとは思う。しかし、かといってフォーム関係ライブラリで有用なものが他にあるわけではないので、現状では貴重なライブラリ群だ。だいたい文句を言っている人は、使いこなせないから文句を言っているのだとは思うが・・・。文句があるならライブラリを自作して公開するとか、代替案を提示してほしいよね(問題点の指摘は大いに結構だけど)。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net