2011-07-26 10 views
2

私は、テーブルとフィールドをループして検索と置換を行うスクリプトを用意しています。スクリプトは完了するまでに約4分かかります。データベースは約1.5GBです。PHPでmysql接続を維持する方法

問題は、どういうわけかデータベース接続が失われていることです。私はADODBを使ってmySQLに接続しています。 db接続は最初に開かれ、スクリプトの全期間が開いたままになります。

if ($rowCount % 100000 == 0) { 
    $db->Execute('USE ' . $db->database); 
} 

私は、このソリューションのファンではない:

問題は、私は次のコードを使用したときに消えます!

私の頭を傷つけるのを止めるのに役立つどんな提案/説明/議論も大変ありがとう!

+1

それはあなたのサーバーであるか、またはあなたは、その設定を編集することができますか?あなたは[mysql.connect_timeout](http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.connect-timeout)に入るかもしれません。 – Jacob

+0

set_time_limit(0);それはあなたのPHPスクリプトがタイムアウトではない? – Eddie

+1

mysql_pconnect()を使用することができます – Tim

答えて

0

あなたはmysql_pconnect();を使用することができますか均等にADODB $conn->PConnect();のために接続が生きているかどうかを判別するために持続的な接続

+0

これは良い提案のようです。 – Michael

+0

1つのページ内で接続*を維持するために永続的な接続を使用する必要はありません。永続的な接続は一般的に望ましくありません – MarkR

+0

@ MarkR接続を維持する方法に関する他の提案はありますか? – Michael

1

使用mysqli::ping()を作成します。そうでない場合は、再度接続してください。

サーバーへの接続が機能しているかどうかを確認します。 がダウンし、グローバルオプションmysqli.reconnectが有効になっている場合は、自動的に 再接続が試行されます。

の間アイドル状態を維持しているクライアントがこの機能を使用し、サーバが接続を閉じているかどうかを確認し、必要に応じて を再接続することができます。

関連する問題