Monthly Archives: 11月 2009

phpが動いているのはモジュール?cgi?

phpがモジュールモードで動いているか?cgiモードで動いているか?を知る方法 – purazumakoiの[はてな]

phpinfoを表示して

4行目あたり

CGIモード

Server API  : CGI

モジュールモード

Server API  : Apache

とか

Server API  : Apache 2.0 Handler

なるほどメモ。
いつか使うときがきそう。

1PHPファイルで3キャリア対応ケータイサイト

PHPを使って3分で作る3キャリア対応ケータイサイト | ke-tai.org

これは便利&面白い。
rewriteしてProxyのようにPHPをかまして、3キャリアのケータイサイトに対応させてます。
アイデアがいいなあ。

ぜひ活用させていただこうっ!

シリアライズした行データの復元 @ Zend Framework

Zend FrameworkでのZend_Db_Table_Row_Abstract型、シリアライズ(serialize,unserialize)するとテーブルのmetaデータを無くしてしまいます。

マニュアルを見ると

復元した行は、なぜ切断された状態なのですか?

シリアライズしたオブジェクトは、可読形式の文字列となります。 データベースのアカウントやパスワードといった情報を 暗号化せずにプレーンテキストにシリアライズして保存すると、 セキュリティ上問題となります。 そのようなデータを無防備な状態でテキストファイルに保存したりしたくはないでしょう。 またメールなどで攻撃者に覗き見られることも好まないはずです。 シリアライズされたオブジェクトは、 正しい認証情報を知らない限りデータベースにアクセスすることはできません。

Zend Framework: Documentation

と書いてあります。ごもっとも。テーブルデータを取り戻すには、

[php]
$rowClone = unserialize($serializedRow);

$bugs = new Bugs();

// この行をテーブルに再接続し、
// データベースとの接続を復活させます
$rowClone->setTable($bugs);

// これで、行の内容を変更して保存することができます
$rowClone->bug_status = ‘FIXED’;
$rowClone->save();
[/php]

と、setTableで再接続させます。

rowsetごとキャッシュしてる場合は、

[php]
$rowset->setTable(new Bugs());
[/php]

と、rowsetにテーブルのインスタンスを渡してやれば、再接続します。

英語ではReactivating a Row as Live Dataなどと書かれていますね。

行データをキャッシュから戻した場合は、リアクティベイティング(←言いにくい)をお忘れ無く!

任意のPHPコードをWordPressのウィジェットに変換してくれる『Widgetifyr』

任意のPHPコードをWordPressのウィジェットに変換してくれる『Widgetifyr』 – 100SHIKI ~ 世界のアイデアを日替わりで

これは一度使ってみたい。便利そうな雰囲気はバリバリする。

Google Analyticsから訪問数・PV数をPHPでゲットするサンプルコード

Google Analyticsから訪問数・PV数をPHPでゲットするサンプルコード:phpspot開発日誌

これはちょっと便利かも。結果をメールで飛ばしたりすれば無理なく管理できる。

使うにはcURLライブラリがいるので注意でっす。

たまたま使ってたubuntuに入ってなかったので

# apt-get install php5-curl

して入れました。

phpのzlibモジュールでコンテンツを圧縮

さくらレンタルサーバはmod_deflateモジュールが入ってないので、PHP側でgzipしてうんぬん~というのをやっていたんだけど、これでよかったのだった。

PHPでコンテンツをgzip圧縮する方法 zlib編

gzip でコンテンツを圧縮することにより、ネットワークの負荷を
軽減させることができ、レスポンススピードの向上が期待できます。

しかしながら、mod_deflateが利用できない場合もあります。phpの拡張 zlib を利用することでコンテンツの圧縮をすることが可能になります。
ob_startとgzhandlerを使うのと異なり、ソースコードの変更は必要ありません。

さくらなどのレンタルサーバを借りている場合に有効な手段になります。

PHPの設定ファイル php.iniに下記設定を追加します。
/usr/local/etc/php/your-php.ini

zlib.output_compression=1

さくらのレンタルサーバの場合、$HOME/www/php.ini に書きます。

うーむ。簡単。
今だとさくらコンパネからphp.iniを修正できるので、そちらで書いても良いですね。

Zend_Db_Table_AbstractでZend_Cacheを利用して負荷軽減

オデの日記@WEB系: Zend_Db_Table_AbstractでZend_Cacheを利用して負荷軽減

で、このZend_Db_Tableですが、生成する度にdiscribetable()というメソッドが呼ばれテーブル情報を取得します。とても便利なのですが、都度DB接続が行われ非効率すぎるのでZend_Cacheを利用してデータをキャッシュさせておきます。
discribeTable()が走るタイミングは
・insert()
・find()
・info()
を呼んだ時だそうです。

というわけでキャッシュを組み込みましょう。

[php]
$frontendOptions = array(
‘automatic_serialization’ => true
);
$backendOptions = array(
‘cache_dir’ => TMP_PATH
);

$cache = Zend_Cache::factory(
‘Core’,
‘File’,
$frontendOptions,
$backendOptions
);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
[/php]