[PHP] PDO接続オブジェクトタイムアウトのMySQL

それぞれの新しいPHPのPDOオブジェクトでは、TCP接続を作成し、接続のMySQLになります。オブジェクト変数のPDOが時間を与えられたとき、彼は、TCP接続オブジェクトを直接オフに接続されて参照されていない続けるだろうオブジェクトが何も操作を行わない場合は、任意のデータを送信しないオフ。、この接続は、MySQLサービスから10秒後に壊れています。

あなたが長い接続パラメータを使用している場合は、関係なく、ループのが唯一のTCP接続があるだ​​ろう、いくつかの新しいPDOを実行します

それはそうではありませんか何も操作せずに10秒は、接続が、mysqlのを遮断する場合は、タイムアウトについて、オンラインおよびWAIT_TIMEOUTの影響は、interactive_timeout 2つのパラメータで情報のほとんどを言ったが、私のテストの後に、これら2つのパラメータを変更します長い接続パラメータを使用して。

データの毎秒伝送した場合、この接続は常に存在しますが、状態が確立されています。2倍長い実行時間があるだろう場合は、接続は、MySQL遮断される
操作は比較的安全な、スクリプトが長期的に必要と実行、データベースの実施形態は、再びすべての新しいPDOオブジェクト8秒、または10秒以内に新しいPDOオブジェクト再サイクル毎に一定数を確保するため

次のようにテストプロセスは、次のとおりです。

現在の接続を表示するには、端末、ノンストップを開き
、日付;明確な操作を行い、真の間、 netstatコマンド-altupnを| grepを3306;睡眠1;行わ

別の端末を行うPHPスクリプトは、長い接続パラメータを一時的に除去することができる、多くのTCP接続、TIME_WAIT状態、アクティブなクライアントが閉じているを見ることができます。
、CLOSE_WAIT MySQLの接続状態を破られる。すなわち1を閉じました接続がFIN_WAIT2で、MySQLのサービス

<?PHP
 // $オプション=配列(PDO :: ATTR_PERSISTENT => TRUE); 
$ I = 0; $ I <10; $ I ++ ){
         $ PDO = 新しい PDO( "mysqlの:ホスト= 127.0.0.1; DBNAME = my_test"、 "根"、 "XXX"、$オプション)。
        var_dump$ PDO )。
}
一方、(1 ){
 スリープ(5 )。
$ PDO - >クエリ( "セット名のUTF8" );

睡眠(11 )。
}

 

おすすめ

転載: www.cnblogs.com/taoshihan/p/11814258.html