私は最近、中規模プロジェクトのサービス面を取得しました。前の開発者は、クラス (func1.php、func2.php など) ではなく、個別の php スクリプトとしてすべての関数を持っています...これらすべての「関数」はmysqli_connect
、実際の「databaseonnection.php」ファイルを参照することで参照を作成します。これは、スクリプトが実行されるたびに (関数を呼び出さなければならないたびに) 新しい接続を作成することであり、私はそれをしたくありません。永続的なつながりを持とうと思っていたのですが、プロジェクトが日に日に大きくなっているので、それが手に負えなくなるのが心配です。それで、誰かが同様の状況に遭遇したことがありますか?データベースへの接続を処理する最良の方法は何ですか? どんな提案でも大歓迎です。
4 に答える
古い関数PDO
とは対照的に、使用する方がはるかに優れていると思います。それははるかに堅牢なインターフェイスです。MYSQL
mysql_connect
以下は、これを行うための基本的なコードです。
$db_handle = new PDO("mysql:host=".$db_host.";dbname=".$db_name.";port=".$db_port."", $db_username, $db_password, $connect_options);
は$db_handle
データベース接続を表す PDO オブジェクト、$db_host
はホスト名 [通常は localhost]、$db_name
はデータベースの名前、$db_port
はデータベースのポート番号 [通常は 3306]、$db_username
は$db_password
データベース ユーザーのアクセス資格情報、$connect_options
はオプションのドライバー固有の接続です。オプション。
永続的な接続を有効にするには、接続を開く前にドライバー固有の接続オプションを設定する必要があります。$connect_options = array(PDO::ATTR_PERSISTENT => true);
その後、以前のデータベース接続コードを実行します。
詳細については、PHP ドキュメント ( http://www.php.net/manual/en/pdo.construct.phpおよびhttp://php.net/manual/en/pdo.connections.php ) を参照してください。 .
永続的な接続の作成に関しては、スクリプトの最後で (もちろんすべてのデータベース操作の後) 開いているすべてのデータベース接続を、データベース ハンドルを無効にして閉じることをお勧めします: $db_handle = NULL;
. 永続的な接続を開いたかどうかに関係なく、これを行う必要があります。直感に反するように聞こえますが、スクリプトが完了したらデータベース リソースを解放する必要があると思います。
[私の経験から]これを行うことによるパフォーマンス上の欠点は、ほとんどのアプリケーションでは無視できます。これは明らかに議論の余地のある主張であり、この点に関する戦略をさらに明確にするために、次のリンクも役立つ場合があります。
ハッピーコーディング!