4

私のアプリケーションのほとんどのページはdb処理を必要としないため、dbを自動ロードしていません。そうしないと、全体が遅くなります。私がやりたいことは、db への新しい接続が既に存在する場合に確立せず、代わりにそれを使用して server-db に迷惑をかけないようにすることです。では、以下の例をどのように実装すればよい$this->db->reconnect();でしょうか? ユーザーガイドを読みましたが、正確な例はありません。

注:オートローディングを無効にして呼び出すとエラーがスローされると聞いたので、使用する必要がある場合は$this->db->close();、それらの実装も手伝ってください。$this->db->initialize();$this->db->reconnect();

CI 2.1 を使用しています

ありがとう

class Test_model extends CI_Model
{
 public function __construct()
 {
  parent::__construct();

  $this->load->database();
 }

 public function function_a($id)
 {
  $this->db->protect_identifiers('year');

  $sql = "SELECT * FROM year WHERE id = ?";

  $data['dbquery'] = $this->db->query($sql, array($id));

  return $data['dbquery'];
 }

 public function function_b($id)
 {
  $this->db->protect_identifiers('month');

  $sql = "SELECT * FROM month WHERE id = ?";

  $data['dbquery'] = $this->db->query($sql, array($id));

  return $data['dbquery'];
 }


 public function function_c($id)...
 public function function_d($id)...
 public function function_e($id)...
} 
4

2 に答える 2

9

pconnect=false基本的に、そのままにしておくとdatabase.php、各スクリプトの実行の最後に接続が自動的に閉じられ、デフォルトで に設定されますfalse

必要に応じて使用できます

$this->db->close();

クエリを実行するたびに手動で接続を閉じて使用する

$this->db->initialize();

クエリを実行する前に、接続を閉じた後に接続を再度初期化します。

于 2012-07-29T15:09:47.100 に答える
3

これを行う最善の方法は、接続を閉じて手動で再接続することです。

$this->db->close();
$this->db->initialize(); 
于 2012-07-29T14:44:57.057 に答える