unserializeされたオブジェクトのメンバ変数にアクセスするとphpファイルが頭から再実行される

私的メモ

ブラウザーを立ち上げなおしてから一回目の実行時にのみ、以下の現象が再現される

・phpページ1でユーザー定義のオブジェクトをserializeする
・phpページ2で、
          ・それをunserializeする
          ・unserializeされたオブジェクトのメソッドをコールして一部のメンバ変数が変更される
          ・オブジェクトのメンバ変数を参照しようとすると、phpページ2が頭から再実行される
          ・phpページ2は、以上の挙動をするまでの間、html出力はおこなっていない

バグなのか仕様なのかわからないが、html出力をおこなっていなければphpページ2は頭から再実行しても問題ないだろうとphp側が思っている節があるので、以下の修正にてとりあえず回避。

・phpページ2において、unserializeされたオブジェクトのメンバ変数を参照する前にダミー的なhtml出力をおこなう

phpのバージョンは5.1.6。

追記

htmlの出力をおこなってもページの再実行がおこなわれるケースあり。session_startが含まれる関数のコードの宣言をクラスの宣言が行われるコードの後に置くと、今のところ再現せず。前も今もsession_startの実行自体はクラス宣言の後なのに、不可解。

MySQL5

メモ

DBサーバーをMySQL5にアップデートした。引っかかった点

・森けい二の「けい」の字がphpMyAdminからエクスポートした時に文字化けを起こしていたので、インポート時にSQL文法エラーを起こす原因になっていた。「けい」の字はJIS X 0213の字なので取り扱い要注意。
・PHP側からの接続先コンピュータ名が「localhost」では通らなくなっていた。
・接続に失敗した場合の処理が不親切なのでリリースまでに改良する必要あり
・接続に失敗した場合、DBを選択できなかった場合、DBが選択できてもスキーマがなかった場合に分けて処理を変える必要あり。

今日は家族4人で大宮の「鉄道博物館」へ行ってきた。大宮に移る前の秋葉原にあった「交通博物館」には長男と何度か行った事があった。まだ長女が生まれる前で、電気街を見て、交通博物館で遊んで、アメ横で中華食材を買って帰るというのが定番パターンだった。大きな鋼鉄の機械を見るとそれだけで血が騒ぐのは男の子の特権なのかもしれない。

私が小さい頃、よく兄に連れられて電車に乗ってあるいた。当時国鉄のキャンペーンで「いい旅チャレンジ2万キロ」というのがあって、国鉄に2万キロ乗ると認定証がもらえるというものだった。鉄ちゃんの兄がこれを目指していて、路線の始発駅と終着駅で兄と駅名の入った看板の写真を証拠写真として撮るのは私の役目だった。広尾線に乗って広尾に行ったのは楽しい思い出だったが、赤字ローカル線としてもう廃止されている。

ここ数日子育ての事で色々な事があったが、いちおうのケリはついた。私もいつもの生活に戻ってきた。今回の一件は、自分の父親としての仕事をゼロから見直すいい機会になった、と自分に言い聞かせている。