私は私のサーバー上で誰かがメッセージを書き込みするたびに要求を送信し、コールバックAPIに働くチャットボットを、持っています
最近、私は私がデータベースの読み込みに時間がかかり、私は、そのプロセスをスピードアップしたいと思いますので、私は、データベースに私は自分のサーバー上の要求を取得するたびに再接続を回避できることを考えさせている、いわゆる持続的な接続を読んだことがあります
だから、私は持っている私のスクリプトで任意の接続を変更したp:
。このように、接頭辞を
$conn = new mysqli("p:".$servername, $username, $password, $dbname);
毎回代わりに新しい接続を開くと、私は理解してきたように、この方法はmysqliのは、同じパラメータを持つ既存の接続を見つけるか、それが存在しない場合は、1つを作成します
しかし、まだ、時間のカップルは、後で私が開いている接続を確認していると私は彼らによって異なるだけで同様の接続の束、気づいたID
、このように
ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+---------+------+-----------+----------+---------+------+-------+------+
| 5248403 | user | localhost | database | Sleep | 24 | | NULL |
| 5248609 | user | localhost | database | Sleep | 113 | | NULL |
| 5247822 | user | localhost | database | Sleep | 1 | | NULL |
| 5248652 | user | localhost | database | Sleep | 79 | | NULL |
(持つuser
とdatabase
実際のユーザとデータベースマスキング)
私は持続的な接続について誤解をしたというものはありますか?私は、同様の接続を避けるために何ができますか?
教科書のXY問題
データベースの読み込みに時間がかかり、私は、そのプロセスをスピードアップしたいと思います
私がもしあれば、永続的な接続は、あなたの問題を解決するための最後のオプションであったであろうという気持ちを持っています。
毎回代わりに新しい接続を開くと、私は理解してきたように、この方法はmysqliのは、同じパラメータを持つ既存の接続を見つけるか、それが存在しない場合は、1つを作成します
これは、実際にははるかにそれからです。PHPでの持続的な接続は、内のスレッドPHPの実行の数にバインドされている。そして、接続を開くことが起こる各スレッドは、実行しようとしているスクリプトのために、このすでにオープンされた接続を提供し、さらに開いたままになります。持続的な接続が永続的、または他の言葉で、永続的にオープンであることを意味します。
したがって、あなたが見ることができる画像が期待されています。
私はあなたが永続的な接続を使用しての測定の利点である疑うものの限り、あなたは「あまりにも多くの接続」エラーに遭遇していないとして、それはすべての権利は、あります。