1

私のphpコードと私のウェブサイトが永続的な接続を使用していないことを確認したい.

以下のSQLクエリを使用して確認しましたが、出力がよくわかりません。

$sql = "SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST";
$items = $connection -> fetch_all($sql);
print_r($items);

以下は出力です。

Array
(
    [0] => Array
        (
            [ID] => 43
            [USER] => root
            [HOST] => localhost:52246
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

    [1] => Array
        (
            [ID] => 38
            [USER] => root
            [HOST] => localhost:52140
            [DB] => 
            [COMMAND] => Sleep
            [TIME] => 423
            [STATE] => 
            [INFO] => 
        )

)

別のページをクリックすると、

Array
(
    [0] => Array
        (
            [ID] => 44
            [USER] => root
            [HOST] => localhost:52301
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

    [1] => Array
        (
            [ID] => 38
            [USER] => root
            [HOST] => localhost:52140
            [DB] => 
            [COMMAND] => Sleep
            [TIME] => 1026
            [STATE] => 
            [INFO] => 
        )

)

常に2つの配列を出力するのはなぜですか? の Query/Sleep とはどういう意味[COMMAND]ですか? 最初の配列で、2番目の配列で空になったと[STATE]言われています-ページが送信されると、db接続が切断されることを意味しますか。executing

また、[TIME] => 0 and [TIME] => 423それはどういう意味ですか?

[HOST] => localhost:52246, [HOST] => localhost:52140, [ID] => 43, [ID] => 38などの異なる値を表示するいくつかのキーがある理由

すみません、ばかげた質問をしたかもしれません...

ありがとう。

編集:

ブラウザでphpMyadminを閉じた後、出力にこれが表示されます。

Array
(
    [0] => Array
        (
            [ID] => 59
            [USER] => root
            [HOST] => localhost:53195
            [DB] => xxx_2010
            [COMMAND] => Query
            [TIME] => 0
            [STATE] => executing
            [INFO] => SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
        )

)

そのため、自分のサイトをクリックするたびに、常に返されます。[STATE] => executingこれは、自分のサイトが永続的に接続されているということですか?

4

2 に答える 2

1

かなり長い間アイドル状態だったユーザーから 1 つの接続が開かれていrootます (ID は同じで、スリープ時間は非常に長い)。何かが開いていて、閉じていません (おそらく、PHPMyAdmin からの閉じられていない接続、またはそのようなもの)...

アプリケーションが同じ接続を使用していません (ID 列から確認できます)。他の接続に関しては、それを試しKILLてみて、それが戻るかどうかを確認できます。そうでなくても、あまり気にすることはありません。

rootもう1つ、MySQLサーバーへのログインには使用しないでください。権限が制限されたユーザーを作成し、PROCESS権限を付与します。ただし、完全な特権を持つユーザーとして接続しないでください...

于 2011-02-07T16:30:07.440 に答える
0

MySQL Documentationは、これらすべてのフィールドのかなり包括的な説明を提供します

状態「実行中」は、まさにそれが示すことを意味します (これはクエリです)。「スリープ」は、スレッドがクライアントからの新しいコマンドを待機していることを意味します。

于 2011-02-07T16:26:24.423 に答える