Monthly Archives: 11月 2007 - Page 2

携帯対応 COOKIEを使わないSESSIONの使い方。

携帯対応 COOKIEを使わないSESSIONの使い方。 – 個人事業主のつぶやき

Cakeを使う時の為のメモ。やはり携帯対応は大変ですね。Androidが福音となるのかどうか。

XCacheで変数をキャッシュ

XCacheを導入してみた

その秘密のひとつは共有メモリを利用したキャッシュを使って、プラグインオプションをすべてメモリ上に保持するようにしMySQLへのクエリの数を抑えているというところにあります。

そうなんです。変数をメモリ上にキャッシュできるんです。どこかで見たことある機能なのに忘れていました。感謝。
静的なテーブルデータなどをキャッシュしておくと幸せな気がしますね。いや、それはDBのほうでキャッシュをきかせればいいのかな。。。

XCacheをインストールしてみました。

ではさっそくダウンロード
Fedora7に入れました。

[code]
$ wget "http://xcache.lighttpd.net/pub/Releases/1.2.1/xcache-1.2.1.tar.gz"
$ tar zxvf xcache-1.2.1.tar.gz
$ cd xcache-1.2.1
$ phpize
$ ./configure --enable-xcache --enable-xcache-coverager --with-php-config=/usr/bin/php-config
$ make
$ make test
# make install
[/code]

正直、coverageはxdebugでやるのでいらないかな、とも思いつつ。


Installing shared extensions: /usr/lib/php/modules/

というわけで無事インストールされました。早速組み込みましょう。例によってphp.iniを編集します。


[xcache-common]
zend_extension = /usr/lib/php/modules/xcache.so
[xcache.admin]
xcache.admin.auth = On
xcache.admin.user = "mOo"
; xcache.admin.pass = md5($your_password)
xcache.admin.pass = ""
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 1M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = "/tmp/xcachecov"

解凍したxcacheディレクトリにあるxcache.iniZAPAさんのを参考に設定しました。
[code]
$ php -i
[/code]
でxcacheが組み込まれていることを確認。早速(既に実行時間を計測してあった)CLIスクリプトをxcache組み込みで走らせませす!
何も変わらず!ズコー!
念のためApacheを再起動したりしてみましたが、何も変わりませんね。

xcacheのadmin画面でCacheの確認が出来たりしますので、その設定を行いましょう。解凍したxcacheディレクトリに/adminというフォルダがありますでの、それをWEBディレクトリにコピーするなりし、ブラウザから先ほどのphp.iniで設定したadmin.userとadmin.passを用いてアクセスします。
#admin.passはmd5で符号化してください。
#php -r “echo md5(“your-password”);”
#など。

で、admin画面で確認してもCLIは全くキャッシュされていませんね。。

mod_phpとかphp-cgiしか早くならない?のですかね。
もちろんApache上でWEBサイトとしてアクセスした場合はきちんと早くなってます。Zend Frameworkを使った簡単なサイトで計測して、スクリプトの実行時間が半分になりました。すごいです。それだけで感動。

XCacheのインストールメモ

ZAPAさんの XCacheのインストールメモ2 を見て、XCacheに興味を持ったけども、未だにアクセラレータ系のものを入れたことのない私です。なんだか昔の不安定だーっていうイメージが拭えないからかもしれません。入れたことないのにイメージ先行。しかし、XCache2は非常に安定しているみたいですし、これは一丁入れてみるしか!
ところでこの手のものはCLIでも早くなるんですかね。なるんですよね。たぶん。。

PHPの種 ブログ » XCacheをインストールしてみました。に追記しました。

PHPのテクメモ | どこでブラウザへの出力をしてしまったのかチェック

PHPのテクメモ | どこでブラウザへの出力をしてしまったのかチェック

header関数を使おうと思ったら「headers already sent」なんていわれることがあるわけだが、この関数を使うと「もう何か出力したかどうか」をチェックすることができる。しかしこの関数のもっとすごいところは・・・どのファイルの何行目で出力があったのか教えてくれる点だ。

headerが出力されているかどうかのチェックをするだけの関数かと思ってましたが、そんな便利機能があったとは。いつか役立つ時がくるメモ。

PHPでWeb Service APIを利用するためのライブラリ群

php-x-apis [ゼロと無限の間に:Sandbox]

PHPでWeb Service APIを利用するためのライブラリを集めてみた。

ということで、集められているAPIの数は圧巻です。素敵まとめですね。
ぜひ利用させていただきたいと思います!

携帯版Google AdSenseのPHPコード

携帯版コンテンツ向けAdSenseがスタートしたようです。
サーバサイドスクリプトが必要なのですね。

以下のいずれかのスクリプトを使用していること
・PHP v4.3.0以降
・CGI/Perl v5.8以降
・JSP v1.2以降
・ASP v3.0以降

携帯版Google AdSenseのPHPコードがきもいので修正してみた – ふわふわな毎日なども参考に使ってみたいと思います。

ユーザー管理ライブラリ『phpUserClass』

ユーザー管理に特化したPHPのライブラリ『phpUserClass』 | IDEA*IDEAで紹介されています。
ソース、ドキュメントを見ましたが、insertUserやActivateなどもきちんとあり使いやすそうです。

HTMLの要素をSQLのように取り出せるPHPのライブラリ『htmlSQL』

IDEA*IDEAさんで紹介されてました、HTMLの要素をSQLのように取り出せるPHPのライブラリ、htmlSQL。これは素敵なスクレイピングライブラリです。ちょっと使ってみましたが、なかなか面白く、使いやすいものになっていると思います。

SQLのようにというのは、sampleを紐解くと、

SELECT * FROM h1

SELECT * FROM a

SELECT * FROM td

SELECT href as url, text FROM a

SELECT * FROM a WHERE preg_match(“/^http:\/\//”, $href)

SELECT * FROM a WHERE preg_match(“/^\/snippets/i”, $href) and preg_match(“/^array_/i”, $text)

SELECT * FROM *

SELECT id, name, password FROM user WHERE $status == “active”

SELECT * FROM * WHERE $id == “header”

SELECT * FROM a WHERE substr($href,0,1) != “/”

SELECT * FROM * WHERE $class == “nav_item”

SELECT * FROM a WHERE ($href == “foo.htm” and $title == “foo”) or ($title == “bar”)

と、このようにSELECTできます。
PHPでは、

[php]
include_once("../snoopy.class.php");
include_once("../htmlsql.class.php");

$wsql = new htmlsql();

// connect to a URL
if (!$wsql->connect(‘url’, ‘http://www.php-seed.net/blog/’)){
echo $wsql->error;
exit;
}

if (!$wsql->query(‘SELECT text FROM title’)){
echo $wsql->error;
exit;
}

foreach($wsql->fetch_array() as $row){
print_r($row);
}

?>
[/php]
このような感じで。
PHPのスクレイピングが盛り上がりますね。
HTML取得にSnoopyを使っているようです。

PHPテクニカルセミナー 設計ツールとしてのテスト駆動開発

PHPテクニカルセミナーでの「設計ツールとしてのテスト駆動開発」 の記事です。

テスト駆動開発の主目的はテストではない

など、面白そうな話題です。