1

ここに問題があります

X 時間後 (5 ~ 40 分の不明な時間) に次のエラーをスローするスクリプトあります

これが私がうまくいくと思うものです

class Model_Bar extends ORM {

protected $_belongs_to = array(
    'foo' => array()
);

public function save(){ //Extends the save method
    try {
        $result = parent::save(); //Try parent save
    }  catch (Database_Exception $e) { //Catch exception
        if ($e->getCode() == 2006) { //If exception code == 2006 then DB has gone away
            mysqli_ping(); //Try to refresh DB link
            $result = parent::save(); //Try parent save again
        } else { //Exception code != 2006
            throw new Exception($e); //Throw new DB exception
        }
    }
    return $result; // Return the result from parent::save()
    }
}

質問: Kohana の ORM で DB へのリンクを更新するにはどうすればよいですか?

より詳しい情報:

ありがとう!

4

1 に答える 1

0

それはどちらかの問題

  • MYSQL で構成されたタイムアウトに達しました
  • パケットサイズ超過
  • パケットの損失

一括挿入などの長い挿入を実行している場合、DB がそのように構成されていなければ、コードを変更しても効果はありません。MYSQL インスタンスを再構成してから、MYSQL のせいを除外してから、コードを修正しようとしてください (これが問題の原因であるとは思えません)。保存を再試行してもあまり役に立ちませんが、DB がさらにビジーになります。

別のこととして、プロキシ (HAProxy など) を使用している場合は、そのタイムアウトも確認してください。

于 2012-12-28T09:19:47.437 に答える