2012年05月07日

ZendFrameworkのZend_Db_Selectの作ったクエリをチェック

ZendFrameworkで実際どのようなクエリが生成されて
いるのかをチェックする場合
「__toString()」を使う。

$str = $select->__toString();

↑こんな感じで取得した文字列を取得して
 書き出せばいい。
posted by 峰若葉 at 22:20| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2012年04月02日

MySQLでCopying to tmp tableが出たら

プログラムが重かったので以前行ったMySQLのプロセス参照
をしてみた。

mysql> SHOW PROCESSLIST;

すると↓こんな表示を見つけた
「Copying to tmp table」

どうもインデックスが大きくなりすぎてメモリからディクスへ
データをコピーして処理してるみたい。
たぶん、Windowsの仮想メモリのような事をしてるのではないのかと。。
そりゃ処理が重いはずだ・・・

で、調べたらmy.confで以下の項目を追加すれば良いらしい。

max_heap_table_size = 256M
tmp_table_size = 256M

他にもメモリ周りの設定があるみたいなので、ここら辺を
ガリガリすれば結構軽くなるかも。

もちろんサーバ自体のメモリに余裕がなければいけませんが。。
posted by 峰若葉 at 22:46| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2012年03月17日

MySQLにて「LEFT JOIN」した側のカラムのカウント

グループ化した時に「LEFT JOIN」した側のテーブルにあるカラムを
カウントしようと思ったがなかなか上手くいかない・・・
どうも「DISTINCT」という修飾子をつけてあげないといけない
らしい。

COUNT( DISTINCT x.id )

初歩的かもしれないけど、これでかなりハマった^^;


posted by 峰若葉 at 19:32| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2012年03月06日

WindowsXPとWindows7の共有について

WindowsXP(32bit)からノートPCのWindows7(64bit)の共有フォルダに
アクセスしてファイルを転送していたら、どうしてもあるファイルを
コピーする時に、
「xxxxにアクセスできません。このネットワークリソースを使用する
アクセス許可がない可能性があります。」

というエラーが表示され、止まってしまう。
さらに、その後は共有フォルダすら覗けない状態になってしまいました・・・
共有の設定やIPの設定などイロイロやってみたのですが、「再起動すると
共有は復活するものの、コピー時に同じファイルでエラーが出る。」の
繰り返し・・・

どうやらNortonが原因のようでした。
↓下記のURLにある方法でレジストリを修正したら無事転送できました!

http://support.microsoft.com/kb/177078/ja
posted by 峰若葉 at 17:25| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2012年02月29日

MySQL SHOWコマンドでテーブルに設定したCommentも取得したい場合

SHOW COLUMNS FROM <テーブル名>;
↑これだとテーブルに設定したCommentは拾えない
Commentも拾うには↓このように「FULL」をつけてやる
必要がある。

SHOW FULL COLUMNS FROM <テーブル名>;
posted by 峰若葉 at 12:21| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2012年02月17日

MySQLで処理中のクエリを調べる

サイトが重い。
どうもデータベース周りが重いみたい。
topコマンドでみたらMySQLがめちゃめちゃCPU食ってる?!
という事でMySQLで今どのような処理をしているかを
下記のコマンドで調べる。

mysql> SHOW PROCESSLIST;

結果、サブクエリ使った処理が重くなっていました。
データが増えた事で再帰的処理の部分でものすごい負荷が
かかっちゃってたみたい。

このコマンド便利かも。。
posted by 峰若葉 at 14:42| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2012年01月17日

ZendFrameworkで日付時間バリデーション処理

ZendFrameworkでの日付時間のパリデーションの処理は
Formの要素使い時に以下のようにする。


->addElement(
'Text',
'date',
array(
'label' => '日付時間',
'required' => true,
'validators' => array(
array(
'validator' => 'Date',
'options' => array('yyyy-MM-dd hh:ii'))
)
)
)

posted by 峰若葉 at 12:31| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2011年12月30日

int型の許容範囲

facebookアプリで取得したidをMySQLに格納したら
「2147483647」という実際のIDとは違う数値が入ってしまう。
どうも、int型の許容範囲を超えてしまっているのが原因のようだ。

という事でMySQL側のIDフィールドの型を「bigint」に変更。

しかし、これでもまだおかしい・・・

探したらPHPのプログラム側にもintへキャストしている部分が
あった。

PHPのint型はそのプラットフォームにも依存するのだが、
10桁くらいが限界らしい。

お行儀良くキャストさせていたのが裏目に出た。
本来ならちゃんと型をそろえるべきなのでしょうが、今回は
仕方ないのでPHP側ではstring型として扱って、MySQL側では
bigint型として登録することにしました。

さすがFacebook。。まさかint型の許容範囲を超えるユーザー数
を抱えているとは・・・


posted by 峰若葉 at 13:14| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2011年12月08日

ZendFrameworkのバリデータのエラー表示の多言語対応

Zend_Formとかで「validator」の検証時にエラーで日本語を表示させたい
と思い、以前はaddElementPrefixPathを使ってValidateクラスを再定義
していたのですが、よく見ると「resources」フォルダに言語ファイルが?!
調べてみたら初めから多言語対応していたのですね・・・

という事で、下記のようにZend_Validate_Abstractクラスに言語パスなど
を指定してあげれば多言語対応完了。

$translator = new Zend_Translate(
  array(
    'adapter' => 'array',
    'content' => '/resources/languages',// ←言語ファイルへのパス
    'locale' => 'ja',// ←言語指定
    'scan' => Zend_Translate::LOCALE_DIRECTORY
   )
);
Zend_Validate_Abstract::setDefaultTranslator($translator);

posted by 峰若葉 at 20:56| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2011年12月06日

ZendFrameworkでアクションメソッドの前処理

Controller内で下記のメソッドを定義

public function preDispatch()

↑アクションメソッドの処理前に実行したい「アクションで共通の処理」など
をここに書いておくと便利。

initメソッドよりは後に処理される。
また、アクションメソッドの処理後で実行したい場合は↓こちらを定義する

public function postDispatch()

posted by 峰若葉 at 12:50| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする