2

PHPスクリプトを実行していて、断続的な問題が発生しています。

PHP致命的なエラー:キャッチされない例外「PDOException」とメッセージ「SQLSTATE [HY000]:一般的なエラー:2013クエリ中にMySQLサーバーへの接続が失われました」

このようなエラーが発生した場合、PDOでmysqlにpingを実行することはできますか?

私のPDO接続が永続的ではないことをお知らせします。PDOをループで接続しています。新しい接続がループで開くたびに私は思います。もしそうなら、なぜmysqlは接続を失っていますか?または、PDO接続がすでに存在する場合は、既存のpdoオブジェクトを提供する可能性があります。ただし、そのようなエラーが発生した場合は、エラーではなく、再接続して新しい接続を提供しようとする必要があります。

エラーを回避するための可能な解決策はありますか?

4

2 に答える 2

3

私の場合、PDOは単一の接続を使用しており、ループサイズが大きい場合、接続がタイムアウトしていました。そのため、すべてのCLIのPDO接続のタイムアウトを増やしました。

$this->connection = new PDO($this->dsn, $this->username, $this->password);
//Increase the session time out for all cli's
if(php_sapi_name() == 'cli'){
      $query = $this->connection->prepare("set session wait_timeout=10000,interactive_timeout=10000,net_read_timeout=10000");
      $query->execute();
}

問題は現在解決されています。

于 2013-05-16T11:17:55.450 に答える
0

次のように、try..catchブロック内でデータベースクエリを実行することをお勧めします。

try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    // Do something here
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage();
    die();
} 
于 2012-08-17T10:39:15.467 に答える