dev.convexstyle.net

Flash Remoting のデバッグ方法

del.icio.us hatena bookmark

Flash で http 非同期通信する Flash Remoting には AMFPHP、PHPObject、Flap、Coldfusion Component とか複数ありますが、個人的には AMFPHP が好きなのでよく使っているんですが、問題は Flash Remoting で生じるデバッグ方法。

Flash Remoting のデバッグ方法構成図
Flash Remoting のデバッグ方法構成図

Remoting 関連のデバッグには大抵 NetConnection Debugger を使ってデバッグしますが、動作が不安定であんまり使用したくありません。そのため PHP 側でテキストを作成しデバッグする"FileDumper"というクラス使用し、サーバ上でこのテキストを vi で直接開いてエラー情報を直接認識した方がかなり効率的で time-effective!実際にアプリケーション作成時にかなり助かってます。

以下、FileDumper サンプルソースになります。


// writeDumper class
class FileDumper {
var $_filename;
var $_dump;
// ファイル名を設定する
function setFilename($filename) {
$this->_filename = $filename;
return $this;
}
// ダンプ内容を設定する
function setContent($dump) {
$this->_dump = $dump;
}
// ダンプファイルの書き出しをする
function writeDump($data = null) {
if ($data) {
$this->setContent($data);
}
if(!function_exists('file_put_contents')) {
$fp = fopen($this->_filename, 'a+');
flock($fp, LOCK_EX);
ob_start();
var_dump($this->_dump);
$res = fwrite($fp, ob_get_contents());
ob_end_clean();
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
} else {
ob_start();
var_dump($this->_dump);
$res = file_put_contents($this->_filename, ob_get_contents());
ob_end_clean();
}
}
}

こんな感じで使えばいいですね。

$fd = new FileDumper();
$obj = $fd->setFilename('フルパス/dump.txt');
$obj->writeDump(デバッグ対象変数名);
?>

このクラスを AMFPHP 用の PHP ファイルに組み込むことで、ローカルの開発環境ではなかなか発見しづらいバグや構造体が正しいかなどすぐに認識可能。共有サーバの人はエラーテキストを vi では開けないので多少作業は増えるけど、ひたすら見えない相手にデバッグを行うよりはかなり効率的です。


【環境】
Flash 8 Professional、AMFPHP 1.2、PHP 4、Fedora Core 4

この記事関連する書物 from Amazon.co.jp

トラックバック

このエントリーのトラックバックURL:
http://www.convexstyle.net/mt/mt-tb.cgi/31

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)