0

いくつかの PHP ファイルがあり、各ファイルには Mysql 接続が必要です。次に、mysql 基本データベース クエリを含む共通ファイル connect.php を用意し、このファイルを Header.php に追加しました。

しかし、懸念されるのは、毎回 connect.php が DB への接続を確立することです (これはヘッダーに含まれているため)。それは有害なMySqlサーバーになります。私のアプリケーションは大きく、約です。200,000 のエントリを持つ 200 のテーブル。php.ini を介して DB 接続をしたいのですが、一度 php.ini を設定したら、コードのどこにでも mysql_connect() クエリを追加する必要はありません。php.ini での設定は 1 つだけです。php.iniに慣れていないため、手順を説明してください

4

1 に答える 1

0

私のアプリケーションは大きく、約です。200,000 エントリの 200 テーブル

それは大きくありません。ただし、テーブルの数が多いということは、通常、データを分割しようとして正規化を破ろうとしているという良い指標です。

php.ini を設定したら、コードのどこにでも mysql_connect() クエリを追加する必要がないことを意味します

mysql_connect(); を追加するのは本当に難しいですか? ? ユーザー名/パスワードが ini ファイルまたは自動追加のインクルード ファイルに設定されている場合は、明示的に設定する必要さえありません。実際、インクルード ファイルで db 関数をラップすると、遅延接続できます。

<?php
ini_set('mysql.default_user', 'scott');
ini_set('mysql.default_password','pussycat');

$GLOBALS['my_db_handle']=false;

function wrap_mysql_connect()
{
   if (false===$GLOBALS['my_db_handle']) {
       $GLOBALS['my_db_handle']=mysql_connect();
       @mysql_select_db('my_preferred_db', $GLOBALS['my_db_handle']);
       @mysql_set_charset('utf8', $GLOBALS['my_db_handle']);
   }
   return $GLOBALS['my_db_handle'];
}

function wrap_mysql_query($sql)
{
   if (false===$GLOBALS['my_db_handle']) {
      wrap_mysql_connect();
   }
   if (false===$GLOBALS['my_db_handle']) {
      trigger_error(mysql_error());
      return false;
   }
   $result=mysql_query($sql, $GLOBALS['my_db_handle']);
   if (false === $result) {
      trigger_error(mysql_error());
      return false;
   }
   return result;
}

不要なときにデータベース接続を開く (および不要になったときに明示的に閉じない) と、リソースが不必要に消費されますが、オーバーヘッドはそれほど大きくありません - 時期尚早の最適化に注意してください。

于 2013-02-28T20:46:59.080 に答える