2

PHP コードの一部を最適化しようとしています。PHP スクリプトのほとんどの時間が、スクリプトの開始時に mysql データベースへの接続中に費やされていることがわかりました。

最初に 1 回だけデータベースに接続し、スクリプトの最後でデータベース接続を閉じます。

ただし、このページを要求するユーザーごとに、新しい接続を確立する必要があります。

データベースへの参照を保持し、すべてのリクエストで共有する方法はありますか?

4

2 に答える 2

5

はい、あなたはそれを達成することができます。

MySQLi拡張機能を使用している場合(末尾にiが付いていない古い拡張機能は古くなっています!p: )、インスタンスの作成時にホスト名にプレフィックスとして 渡すことで持続的接続を作成できます。mysqli::__construct

を参照してください。

古いMySQL拡張機能を実際に使用している場合は、持続的接続用のmysql_pconnectがあります。


または、PDOを使用している場合は、を使用setAttribute()してを使用できますPDO::ATTR_PERSISTENT

での持続的接続の使用に関するドキュメントPDO

于 2013-03-03T13:54:03.677 に答える
2

接続を永続化できます (PDO の場合はPDO::ATTR_PERSISTENT => trueを使用します) が、スクリプトが mysql への接続に多くの時間を費やしている理由を見つけて、そこを改善することをお勧めします。

このことを考慮:

  • DNS の解決に必要な時間をなくすために、ホスト名の代わりに MySQL サーバーの IP を使用します。
  • mysql のオートコンプリートを無効にする: (skip-auto-rehashからのコメントmy.cnf)
  • 同じものを何度も返すクエリを大量に作成する場合は、キャッシュ システムを使用してクエリ結果をキャッシュすることを検討してください。
  • コードをcodereview.stackexchange.comに投稿して、コードをさらに改善するための他の専門知識を活用してください。
  • 問題をさらにデバッグするには、コンソールから MySQL サーバーに接続し、接続の開始、データベースの変更、選択などに必要な時間を確認します。
于 2013-03-03T14:02:48.080 に答える