読者です 読者をやめる 読者になる 読者になる

nmtysh.log

Tech系のネタや日々の独り言などを書いています。

ネストしたトランザクションに久々に嵌った

データ変更のバッチ処理を書いて、検証して「よしOK」となりローカルの環境に本適用しました。 その後、念のため同一処理を再実行しても再適用されないことを検証したら何故か適用されちゃいました。 検証中は意図的にトランザクション処理をrollback()する…

dockerのphp:7-fpm-alpineイメージでCakePHP3を動かす

※この記事はQiitaにも掲載しています。 nmtysh.hatenablog.com PHP7を試すためのdocker-compose.ymlを作って、CakePHPをいざ試そうとすると色々モジュールが足りなかったり、VirtualBoxでBoot2Dockerを動かしているために発生する問題があったので、その対処…

PHP7を試すためのdocker-compose.ymlができました!

設定ファイルの作成に苦戦しましたが、やっと環境をつくれました! github.com docker-compose up -dで起動してdocker-machineのipに接続すると、NginxからPHP-FPMへちゃんと処理が渡せてphpinfo()が表示できました! 構成図はこんな感じです。 設定ファイル一…

CakePHP 2.xのElementのCacheは入れ子にできない

CakePHPでViewのElementでキャッシュが利用できます。 利用できますが、キャッシュ生成処理の処理上、入れ子になったElementで親と子の両方でCacheを使うとCacheがおかしくなります。 親のElement(ここではAとします)で、Elementの処理時にCacheのconfigを生…

rename後にはchmodが必要だった

意図したパーミッションにならない 対象Ver: 5.5.x ファイルシステムにファイルを吐き出すCakePHPのコードを書いたのですが、作成したファイルが意図したパーミッションになりませでした。 ファイルを作成した流れ 一時ファイル作成(パーミッションは0644を…

FormHelperでoptgroupを使う場合はshowParentsをtrueにする

CakePHPのFormHelperを使ってselectのoptgroup/optionを出力したのですが、一部のoptionが出力されませんでした。 [ 1 => 'A', 2 => 'AA', 3 => 'AAA', 4 => 'AAAA' // <- これが出力されない ], 'BBBB' => [ 5 => 'B', 6 => 'BB', 7 => 'BBB', 8 => 'BBBB'…

すべてのUnitテストを個別に実行する方法

CakePHPのUnitテストで個別に実行する場合とAllTestsで結果が異なる問題が起きています。 他のテストの影響を受けているみたいなのですが、全部のUnitテストを手動で実行するのは骨が折れます。 なので、シェルスクリプトとまでは行きませんが、ファイルごと…

CakePHP の $useDbConfig にはまった(備忘録)

結論: FixtureのuseDbConfigでDataSourceを指定するには、対になるDataSourceが定義されてないと駄目でした。 例) $test_hoge = array(/* ... */); なら $hoge = array(/* ... */); が定義されてないと駄目。 動的にDBの接続先を切り替えるプログラムを書い…

session.use_trans_sid を使わずに CakePHP 2.3 でURLにセッションIDを付与する方法

Cookie が使えないブラウザではURLにセッションIDを付与してセッションを引き回します。 PHP だと session.use_trans_sid を1にすることで、 PHP が透過的にセッションIDの付与を行ってくれます。 ですが、付与のタイミングが問題で以前書いたようにブラウザ…

CakePHP と Content-Length と imodeブラウザ(未解決)

携帯電話(いわゆるFP:フィーチャーフォン)向けの、Webサイトを構築中な訳だが、Cookieが使えない下位端末への対応に悪戦苦闘中。 Cookieが使えない場合はセッション情報を引き継ぐ手段としてURLにセッションIDを付与するわけだが、このセッションIDの付与処…

beforeSave() でDBを切り替える

Master/Slave なレプリケーションをしている場合、更新系は MasterDB に変更します。 CakePHP だと $this->useDbConfig を書き換える必要があります。 今までだと Model.php の save($data, $validate, $fieldList) をオーバーライドする必要がありました。 …