PHP-OpenID XRDSの処理が途中で停止するサーバー
XREAのs317サーバだと、PHP-OpenIDのexamples/consumerプログラムにおいて、OPがXRDSだった場合に処理が途中で止まる。
try_auth.phpが真っ白で返ってきて焦った。
対策
s317サーバを使うのは止めましょう。同じXREA内でも他のサーバなら大丈夫みたい。
原因を特定できなかった
どこで止まるか?というのが一定してなくて困った。
さらにPHPがエラーメッセージを吐き出してくれないのにも困った。E_ALLでも無反応。ろうそくの火が消えるように、静か〜に止まる感じ(HTTPのレスポンスは空っぽで返ってくるくせに)。
挙動は大体いつもXRDSのXMLファイルのParse処理(DOMXPath Objectのqueryメソッドでxrd:Serviceを全て拾ってくる処理の辺り)でよく止まるという程度の状態であり、必ずここで止まるわけではなく、もっと先まで行くことも、ちょっと手前で止まることもあるのであった。
それなのに確実に失敗するという不思議。
レスポンスが返ってくるまで5秒もかかってないから、タイムアウトってわけじゃないだろうし、サーバが過負荷ってこともなさそうなんだけど…うーん判らん。
過信はいけないよ
これがサーバの環境(設定?あともしかしたら自分のアカウントだけかも?)の問題だと気が付くまでに1日かかった。
なんか悲しいのだけど、自分の処理能力を過信したのがいけなかったと思う。「俺様ならば原因特定と問題解決ができるはずだぜー!」っていう無用な頑張り。結果がでなければ価値がマイナス。
時間は有限だから区切っていかんとな。