[PHP-users 34283] Re: hang up

HOTTA Michihide hotta @ net-newbie.com
2009年 2月 6日 (金) 22:54:25 JST


堀田@長崎市です。

こちらに誘導した手前一応コメントしますが、ちょっとレイヤーの違う
話なので…。

From: <liyuting @ m5.gyao.ne.jp>
To: php-users @ php.gr.jp
Date: Fri, 6 Feb 2009 19:13:56 +0900 (JST)
Subject: [PHP-users 34281]  hang up

> MySqlのPDOを使用しています。SELECTの間にネットワークケーブルを
> 外すと、hang upを発生してしまった。非常に困っています。
> 解決方法を教えてほしいです。 

どういう結果を望みますか?

おそらく、プログラム的には例外を発生させて、エラーメッセージを表
示したいんじゃないかと推察します。

お使いの環境では、php と mysql は TCP でつながっています。TCP 
(TCP/IPのTCPです)は一時的に通信障害になっても、可能な限りリト
ライして結果をアプリケーションに返そうとします。どうしても接続で
きずに最終的にあきらめてしまうまでには分単位の時間がかかりますが、
その間アプリケーションには何も返って来ません。ちょうどディスクが
壊れかけて、何度かリトライしているような感じです。ディスクアクセ
スなんて、プログラムの中では意識してないですよね?それと同じです。

なので、このレベルのエラーは、アプリケーションプログラムで捕捉で
きるとは思わない方がいいです。プログラマとしてできることは限られ
ます。プログラミングとしては、書かれた方法で正解でしょう。

実運用の話であれば、プログラムよりもう少し OS に近いレベルで障害
を検出することを考えたほうがいいと思います。それはすでに php じゃ
ないのでここでは off topic ということで。OS 周りを担当している人
に聞くか、もしくは OS 関連のメーリングリストで聞くか…。ひょっと
したら mysql の中にソリューションがあるかもしれませんが…。

-- 
HOTTA Michihide <hotta @ net-newbie.com>


PHP-users メーリングリストの案内