sql >> データベース >  >> RDS >> Mysql

PHPMySQL接続の永続性

    永続化は、Webサーバーに埋め込まれているPHPのコピーによって行われます。通常は正しいでしょう-PHPがCGIモードで実行されている場合、リクエストが実行されてPHPがシャットダウンしたときに永続化するものが何もないため、永続的な接続を確立することは不可能です。

    ただし、ウェブサーバーにはPHPのコピーが埋め込まれており、ウェブサーバー自体がリクエスト間で実行され続けるため、その「永続的な」PHP内で永続的な接続のプールを維持することができます。

    ただし、Apacheマルチワーカータイプのサーバーモデルでは、接続プールは子供ごとに維持されることに注意してください。プールの制限を10に設定すると、Apacheの子ごとに10の接続があります。 20人の子供=200人の接続。

    永続的な接続は、デッドロックやその他のデバッグが難しい問題などの長期的な問題にもつながります。覚えておいてください-ユーザーのHTTPリクエストが同じapache子/mysql接続によって処理されるという保証はありません。スクリプトがデータベーストランザクションの途中で停止した場合、そのトランザクションはしない MySQLはHTTP側を認識しないため、ロールバックされます。認識されるのは、mysql <-> apache接続がまだ開いていて、すべてが正常であると想定していることだけです。

    その特定のapache/mysql子/接続の組み合わせをヒットする次のユーザーは、トランザクションが開いているという手がかりなしに、魔法のようにそのトランザクションの途中で終了します。基本的に、これは洗浄されていないトイレに相当するWebです。前のユーザーからのすべての「ゴミ」はまだそこにあります。

    非永続的な接続を使用すると、接続するたびに「クリーンな」環境が保証されます。



    1. SQLクエリは複数のテーブルからデータを返します

    2. AzureSQLデータベースの帯域幅に適したクエリプロファイリング

    3. mysqlストアドプロシージャパラメータを一覧表示する方法

    4. 単数形または複数形のデータベーステーブル名?