月別アーカイブ: 8月 2015

FuelPHPでマイグレーション

 FuelPHPでデータベースを管理するときにマイグレーションを使うと便利だけど、細かいことはしないのでoil g migrateとoil r migrateで済ませていたけど、ちょいちょい開発でいじるために調べた内容をメモする。

 まず、マイグレーションは APPPATH/migrations/の下に「連番_名前.php」(ex.123_add_index.php)みたいなファイルを作る。
このファイルの中身は、

 みたいな、upとdownメソッドを持つクラスになっている。 ファイル名の名前にあわせてクラス名を設定する。
 upメソッドではマイグレーションを適用する処理を書く。 この場合は、parametersテーブルのkeyフィールドにUNIQ_KEYと言うUNIQUEキーを設定している。
 downメソッドではマイグレーションを取り消す場合の処理内容を書く。 この場合は、追加したキーを削除。

 マイグレーションを実行する場合は、通常 oil r migrate で実行するけど、開発では適用位置を調整したいのでオプションを使う。
oil r migrate:up
マイグレーションを1段階だけ実行する

oil r migrate:down
マイグレーションを1段階だけ取り消す

oil r migrate –version=12
マイグレーションを指定したバージョンにする(この場合は、012_hoge.phpマイグレーションの実行状態に移動する。 現在の適用状態が12未満なら進み、13以上なら巻き戻る)

 初期レコード投入や、そもそもDBの構造を操作せずにレコードを操作することも出来るので、コードリストなどを管理することも出来る。

(77)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

PHPで簡単にロックファイル管理

久しぶりにPHPネタ

 同時に実行されたら困るような処理を手軽に実装するときにロックファイルを利用するけど、何かで転けてファイルが削除されない場合とかに面倒(FATAL Errorだと終了処理になってしまいtry catchとかで削除処理を書いても処理が走らない)
 PHPでは、エラーでも何でも終了処理するときに実行されるコードを登録するのに、register_shutdown_functionと言うのがあるので、これを使ってやると都合が良い。

みたいな感じで実装する。

ロックファイルがあるか確認して、あれば異常終了する。
ロックファイルを作成する。
ロックファイルを削除する終了関数を登録する。
この手順以降では、エラー時にもexitとかで終了させても勝手にロックファイルが削除される。

(131)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ