Are you ready for TECH INFO?
PHP標準フレームワークとの呼び声も高いZend Framework(以下zf)ですが、
Zend_Db ではまってしまいました。
さて、zfはコンポーネント間の連携が疎になっているそうで、それぞれ単独でも使えるというのが売りの一つだったりします。
そういう訳で、zf標準のMVCモデルを使ってなかったりするので、私の場合、本質から離れた使い方になっているようです。
でも、こっちにもいろいろ事情があるのです、HTMLの作成にはビジュアルツールを使いたいですしね。
cssで外観をいぢるのに、URLにスラッシュでパラメータをつけていかれるのは迷惑なのです。
MVCのVの部分では既にテンプレートエンジンを使っているので、Zend_Viewは使ってられないのです。
さてさて、そんな私でもzfはやはり、福音をもたらしてくれるツールに思われます。
いや、まだそれほどまで使い込んでないですけど...
さて、本題のZend_Db です。
こいつがまた、便利そうなのは伝わってくるのですが、具体的な使い方があんまり見当たりません。
本家のマニュアル(リファレンスガイド)も、いまいち使えません。
apiドキュメントというやつも、わけがわかりません。
なんで、php.netみたいにならないんでしょうか?
開発してるやつだって、ここを参考にして作ってるんだろうに、全く...
PHPの本家と言える会社がが開発してる割には、アレなマニュアル環境に辟易としながら
Zend_Dbの使用法を学ぶつもりだったのですが、さて、ここでわからない事が
どうすれば、MySQLのテーブルロックできるんですか??
ネット上にはこれに関する記述(日本語)はほぼ皆無。
書籍にも、載っていません。
くそっ、どうなってる?ロックぐらい使うでしょ???
それとも、ロックする人はMySQLを選ばないんですか?
行ロックのできるPosgresとか、Oracleとか使うんですか?
あるいは、MySQLでもInnoDBで使えって事?
いや、そんな大袈裟な事にDB使うんじゃないですよ。
ちょっとだけロックしたいだけですよ、あるでしょそういう事。
無いの?ウソでしょ?
さてさて、PDOの場合、MySQLでテーブルロックが出来ることは確認済みです。
じゃ、いけるんじゃないのか?Zend_Dbだって、PDO使って実現してるんでしょ?(PDOのアダプタ使った場合)
さぁ困った。
マニュアルみても書いてません。
仕方がないので、ソース見ることにしました。
眺めてみて...うーん、いけそうな気がします。
$parameters=array(/*適当なパラメータの配列*/); $table = "テーブル名"; $db = Zend_Db::factory('Pdo_Mysql',$parameters); $db->exec("LOCK TABLES $table WRITE"); /*なんか、処理*/ $db->exec("UNLOCK TABLES");
いやぁ、これじゃ例外がthrowされるような気もします。
うーん
やっぱ、これかな?
$parameters=array(/*適当なパラメータの配列*/); $table = "テーブル名"; $db = Zend_Db::factory('Pdo_Mysql',$parameters); $db->getConnection()->exec("LOCK TABLES $table WRITE"); /*なんか、処理*/ $db->getConnection()->exec("UNLOCK TABLES");
これで、いけるかも? いけないかも(笑)
いや、試してないのでわかりません。
試せばいいのですが、面倒なのでしません(をいをい)
後々、必要になればします。
今回は、覚書って事で。
しかし、これでロックできても、Zend_Dbの仕様が変わったら動かなくなるな。
うーん、
テーブルロック用の関数とか、標準で作っておいて欲しいです。
for update とかは出来るようになってるくせに。
いけず。
月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |