PHP は、さまざまなデータベースと対話して通信できる、広く使用されているサーバー側スクリプト言語です。実際の開発では、データベースに接続する必要がある場面に遭遇することがよくあります。 PHP がデータベースに接続する際には多くの要素が関係しますが、重要な要素の 1 つは接続時間の設定です。この記事では、PHPがデータベースに接続する時間を設定する方法を簡単に紹介します。
1. PHP データベース接続時間の設定
PHP でデータベースに接続する時間は、通常、接続タイムアウトとクエリ タイムアウトの 2 つの変数によって制御されます。接続タイムアウトは、データベースに接続するための最大待機時間を指します。この時間内にデータベースに接続できない場合、接続要求は失敗します。クエリ タイムアウトは、クエリ実行の最大待機時間を指します。この時間内であれば、接続リクエストは失敗します。クエリを完了できない場合、実行は中止され、エラー メッセージが返されます。
PHP 5.3 以降では、パラメータに timeout キーワードを追加することで、接続タイムアウトとクエリ タイムアウトを設定できます。例は次のとおりです。
$conn = mysqli_connect($host, $username, $password, $dbname, $port, null, array('connect_timeout' => $connect_timeout, 'query_timeout' => $query_timeout));
このうち、$connect_timeout と $query_timeout は、それぞれ接続タイムアウトとクエリ タイムアウトを秒単位で表します。
また、PDO では、属性を設定することで接続時間を制御することもできます (例:
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_TIMEOUT => $timeout));
このうち、$timeout はタイムアウト時間を秒単位で表します)。
2. 接続タイムアウトとクエリ タイムアウトの設定方法
PHP では、接続タイムアウトを設定のパラメータ。サンプル コードは次のとおりです:
$conn = mysqli_connect($host, $username, $password, $dbname, $port, null, array('connect_timeout' => $connect_timeout, 'query_timeout' => $query_timeout));
このうち、$connect_timeout は接続タイムアウト (秒単位) を表し、$query_timeout はクエリ タイムアウト (秒単位) を表します。必要に応じて、これら 2 つのパラメータの値を設定できます。
PHP のクエリ タイムアウト設定には、通常、MySQL の 2 つのパラメータ、wait_timeout と interactive_timeout が含まれます。 wait_timeout は、クライアントが非アクティブ状態でサーバーが接続を閉じるのを待つ時間を指します。interactive_timeout は、クライアントが非アクティブ状態でサーバーが接続を閉じるのを待つ時間を指します。これは、クライアントが次を使用する場合にのみ機能します。 「インタラクティブ」オプション。デフォルトでは、これら 2 つのパラメータの値は 28800 秒、つまり 8 時間です。
PHP では、SQL ステートメントでタイムアウトを指定することでクエリの実行時間を制御できます。サンプル コードは次のとおりです。
$stmt = $conn->prepare("SELECT * FROM users WHERE id=?"); $stmt->bind_param("i", $id); $stmt->execute(); $stmt->store_result(); $stmt->sqlstate(); $stmt->get_warnings(); $stmt->errno(); $stmt->error(); $stmt->fetch();
クエリ ステートメントを実行するときに、次のコードを追加できます。
$stmt->query("SET SESSION wait_timeout=120");
このようにして、ここでタイムアウトを設定できます。ここでは、次のように設定します。 120秒。 wait_timeout はサーバー側のパラメーターであるため、このタイムアウトの設定は大まかであり、詳細が十分ではありません。
3. まとめ
PHP がデータベースに接続するときは、接続タイムアウトやクエリ タイムアウトなどの接続時間の設定に注意する必要があります。これを実現するには、パラメータでタイムアウトを指定します。さらに、SQL ステートメントでタイムアウトを指定して、クエリの実行時間を制限することもできます。より詳細なタイムアウト制御を行うには、MySQL サーバー側のパラメーターをより深く理解する必要があります。実際の開発では、システムの安定性と信頼性を確保するために、特定の状況に応じてタイムアウトを合理的に設定する必要があります。
以上がPHP がデータベースに接続する時間を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。