[PHP-users 16420] Re: APC Version 2.0 Released.
Youichi Iwakiri
yiwakiri @ st.rim.or.jp
2003年 7月 3日 (木) 15:55:54 JST
いわきりです
Seiji Masugata wrote in <200307030317.h633Hdcu024018 @ azusa.digicom.dnp.co.jp> :
>> http://pear.php.net/package-info.php?pacid=95
>> と混同していたようです。(^^;
>本件とは関係ないですが、改めて上記URLを見ていたら
>そもそも根本から勘違いしている可能性が。(汗
どうでしょ ;p
bcompilerは、APC Version 1のmmapの実装に使われていたコードの
シリアライザを参考にして作成されたようで、ソースコードのキャッシュ
用途よりは、隠蔽に向いていると思います。
下記サンプルを試せば、判ると思いますが
主要なコードをbcompilerでバイトコード化し、
提供(納品)することで、隠蔽が可能となります。
make.phpでmy.cacheというバイトコードを作成し、
exec.phpで実行します。
提供すべきものは、my.cacheとexec.phpのみという形態になるでしょう。
-- make.php
<?php
dl('bz2.so');
dl('bcompiler.so');
function func_foo($a, $b) {
return $a + $b;
}
class class_bar {
var $a = 'class';
var $b = 'bar';
function get() {
return $this->a . $this->b;
}
}
define('CONST_BAZ', 10);
$fp = fopen('my.cache', "w");
bcompiler_write_header($fp);
bcompiler_write_function($fp, 'func_foo');
bcompiler_write_class($fp, 'class_bar');
bcompiler_write_constant($fp, 'CONST_BAZ');
bcompiler_write_footer($fp);
fclose($fp);
?>
-- exec.php
<?php
dl('bz2.so');
dl('bcompiler.so');
$fp = fopen('my.cache', "r");
bcompiler_read($fp);
fclose($fp);
echo "loaded function test:\n";
echo func_foo(3, 4) ."\n\n";
echo "loaded class test:\n";
$a = new class_bar();
echo $a->get() . "\n\n";
echo "loaded constant test:\n";
echo CONST_BAZ . "\n";
?>
#APCほど簡単では無いですが、可搬性のあるバイトコードを
#作成できます。
#bzip2で圧縮かけてあるのでパスワード等も一応不可視に
#なります。
--
Youichi Iwakiri
PHP-users メーリングリストの案内