Yearly Archives: 2009 - Page 2

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]

Zend Frameworkで多対多のテーブルをMyISAMなどリレーション無しで扱う場合

Zend Frameworkで多対多のテーブルをリレーション無しで扱う。:: PHPの種 ブログ

つまり強制MyISAMのさくらレンサバでは。。
$_dependentTablesを指定しましょう。

で、ある程度Zend_Db_Tableで保管ができるので、それを利用させてもらいましょう。

[php]
class BugsProducts extends Zend_Db_Table_Abstract
{
protected $_name = ‘BugsProducts’;
protected $_referenceMap = array(
‘Bug’ => array(
‘columns’ => ‘bug_id’,
‘refTableClass’ => ‘Bugs’,
‘refColumns’ => ‘id’,
‘onDelete’ => self::CASCADE,
‘onUpdate’ => self::CASCADE
),
‘Product’ => array(
‘columns’ => ‘product_id’,
‘refTableClass’ => ‘Products’,
‘refColumns’ => ‘id’,
‘onDelete’ => self::CASCADE,
‘onUpdate’ => self::CASCADE
)
);
}
[/php]

んで、リファレンスを貼られたほうのテーブルで

[php]
class Products extends Zend_Db_Table_Abstract
{
protected $_name = ‘products’;
protected $_dependentTables = array(‘BugsProducts’);
}
[/php]

DependetTablesをクラス名で指定しておきます。

これでDeleteがCascadeされたりなど、Zend_Db_Table側でリレーションを保管してくれます。
そもそもInnoDBが使えればいいんですけどねえ。。

Zend Frameworkで多対多のテーブルをリレーション無しで扱う。:

Zend Frameworkで多対多のテーブルを簡単に扱う。: PHPの種 ブログ

RDBMS上でリレーションを組んでおけば、Zend_Db_Tableの設定で 親側のテーブルに $_dependentTables を指定しなくてもよいので楽です。

つまり強制MyISAMのさくらレンサバでは。。
$_dependentTablesを指定しましょう。

さくらのレンタルサーバはmagic_quotes_gpcがオンです

さくらレンタルサーバで久々にPHPを組んでたら、やられました。
magic_quotes_gpcがデフォルトでオンでした。

というわけで、~/www/php.iniを直接編集するか、さくらインターネットサーバコントロールパネルからPHP設定の編集で

magic_quotes_gpc = off

としてやりましょう。
magic_quotes_gpcはphp6では廃止されるというのに。

Zend Framework 入門に良い書籍は何か

0.いくつのバージョンからがっつり使っていたZend Framework。いつのまにやら新機能が出過ぎててちょっとついていけなくなりつつあります。
まあ普通にMVCなフレームワークとして使っている分には問題ないハズなんですが、新しい機能はきっと便利に違いない!と思い、色々と再勉強している最中です。

勉強にはやはり書籍だろう!というわけで、Zend Frameworkの書籍を調べていたら、あるわあるわ。。
こんなに本が出るほどブームなのか?(^_^;

どれを読んでいいのかさっぱりわかりません。

これが最も売れているっぽいし、レビューも評価が高いけど、いかんせん2007年の出版では古いのではないか。
増刷時に加筆されてたりするのかな。

こちらはSmartyとの連携も載っているとか。今Smarty使ってないけど。

レビューに

最後にブログサイト構築ですが、問題なくインストールして試す事が出来ましたし、
ディレクトリ構造表がありますので設置も解かり易い様に思います。実践ソースも参考になります。

とあるのでかなり惹かれる。実際にブログレベルの動くサイトを構築できて、ディレクトリ構造表がついてて理解もしやすくなってるのは素晴らしいです。

これは2009年6月と非常に新しいですね。
目次とか索引だけですがAmazonで中身検索できてよいですね。
こういうのはやはり助かります。

PEARのサンプルも色々ついていて素敵!となるか。まあ実際Zend Frameworkだけでなく、PEARも使ってますからね。
pagerは未だにPEARのを使ってたりします。

と、どれを読んでいいかよくわからないことに。
そのうち読んで使った中身レビューを届けるつもりです。。

WordPressで関連記事を自動挿入するプラグイン「Similar Posts」

WordPressで関連記事を
自動挿入するプラグイン「Similar Posts」とその具体的な実装例 | きにきじ

ブログによくある、「この記事に関連した他の記事〜」みたいなのを実装したくて、pluginを入れてみました。

Similar Postsです。

Post-Plugin Libraryというpluginも一緒にいれなければいけません。

果たしてどのように動作するのか。。

それはこの記事のタイトルをクリックして単独表示にしていただければ
わかると思いますm(_ _)m

ZendFramework::エラーコントローラをモジュール毎に分ける

ZendFrameWorkでエラーコントローラを使おうとした時のお話し。 – 西新宿のプログラマの日記

モジュール毎にErrorControllerを分ける方法が私にもわからんのです。
Default見に行っちゃう。
DefaultのErrorController内で$this->_request->getParam(‘module’)でも見て振り分けるしかないのかな。

file_get_contents VS CURL, what has better performance?

file_get_contents VS CURL, what has better performance? – Stack Overflow

file_get_contents と CURL、どちらがパフォーマンスが良いか?という記事なのですが、まあ普通に考えてCURLのほうが早いでしょう。
で、結果もやはりそうでした、という記事。

Zend Framework ではじめる携帯サイト

Zend Framework ではじめる携帯サイト – Devel::Bayside

ZFではじめる携帯サイト(PDF)

すばらしいまとめ。参考になります。

splitとexplodeの違い

split

使っちゃだめよ? – がるの健忘録
さて。まずマニュアルをちゃんと読んで見ませう。

http://jp.php.net/manual/ja/function.split.php

split ― 正規表現により文字列を分割し、配列に格納する

正規表現により文字列を分割し

正規表現により

正規表現

大切なところをちょっと繰り返してみました。

あっらー
splitなんてexplodeのエイリアスでしょ、ぐらいに思ってました。
いかんですね。
これからは特に正規表現を必要としていない場合はexplodeですね。