0

私は通常のウェブサイトを持っています。PHP を使用して MySQL テーブルを呼び出します。毎回入力する手間を省くために、すべてのページでデータベースに接続include()するconnect.phpファイルを作成します。Web サイトに「mysql 接続が多すぎます」というエラーが表示され続けます。このようなページの最初に接続するのは悪い考えですか?

PHP スクリプトが必要とするたびに新しい接続を作成し、そのスクリプトが完了したら mysql_close でその接続を閉じる必要がありますか? ウェブサイトに繰り返しコード行を追加するので避けていましたが、それが問題の原因なのだろうか?

したがって、現時点で私のコードは次のようになります。

<?php
include("connect.php"); //connects to database using mysql_connect() function
...
PHP script that calls mysql
...
another PHP script that calls mysql
?>

このようなものに変更する必要がありますか?

<?php
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
PHP code that calls mysql
mysql_close();
...
mysql_connect('host', 'username', 'password');
mysql_select_db('db');
more PHP code that calls mysql
mysql_close();
?>
4

3 に答える 3

2

可能な限り、データベースへの新しい接続を作成しないようにする必要があります。

データベースへの接続は、時間とコストのかかるプロセスです。接続を開いていると、リソースはほとんど消費されません。

ところで、mysql_* 関数の使用を停止します。mysqli_* またはPDOを使用します。

于 2013-08-28T15:27:58.023 に答える
1

PHP スクリプトが必要とするたびに新しい接続を作成する必要があります [...] ?

はい、特にすべてのページが mysql 接続を必要としない場合は、これが最も理にかなっています。

PHP では、php.iniファイルにデータベース資格情報を設定することでこれが機能し、呼び出すだけでmysql_select_db、これまでに接続が存在しない場合は、構成されたデータベースに自動的に接続されます。

新しいコードを記述する場合は、データベース接続を独自のオブジェクトにカプセル化して、データベースに接続するタイミングをより細かく制御できるようにします。

たとえばSilexのような最新のフレームワークでは、そのような中央コンポーネント ( Services )を遅延ロードできるため、それらを構成して必要なときに使用できますが、リソースについて心配する必要はありません (の接続制限など)。あなたの例)。

[...] そのスクリプトが完了した後、mysql_close でその接続を閉じますか?

PHPがこれを行うため、通常は必要ありません。

于 2013-08-28T15:28:25.213 に答える
0

このスタイルのコーディングに本当に問題があるとは思いません。それはすべて、作成しているアプリの種類によって異なります。スクリプトをよくチェックして、エラーを取り除くようにしてください。問題ないはずです。これは私が通常行うことです

<?php session_start(); include "inc/config.php";
//require_once('chartz/lib/idiorm.php');
if ($_SESSION["login1"]== "Superadmin" or $_SESSION["login1"]== "User" or $_SESSION["login1"]=="Administrator")
{
    $snames = $_SESSION["name1"];
    $id = $_SESSION["id1"];
    $stype = $_SESSION["login1"];
    $stokperm = $_SESSION['stokperm'];
    $navtype = $_GET['nav'];
    include("inc/ps_pagination.php"); 
    }
  else
  {
    header ("location: ../../../index.php");
  }
?>

それが最善の方法だと言っているわけではありません。私たちはまだ学んでいます...

また、blue112 のアドバイスを真剣に受け止めてください。私のアプリのほとんどは昔ながらの方法で書いていますが、mysqli_* または PDO を使用するのが道です。

于 2013-08-29T09:56:27.750 に答える