PHPでmysqlデータベースに接続し、dbがサイト自体と同じマシンでホストされている場合、マシンのIPまたは127.0.0.1のいずれかを使用できます。
2つの間にパフォーマンスの違いはありますか?127.0.0.1をいつ使用すべきかについてのガイドラインはありますか?
ローカルマシンに接続する場合は、サーバーが他のインターフェイスへのアクセスを拒否する可能性があるため、常にlocalhost
、またはを使用する必要があります。127.0.0.1
さらに、IPが変更された場合、どこかに配置したIPのすべての発生を変更するために行うべき膨大な量の作業があります。
ただし、ループバックアドレスはわずかに高速である必要がありますが、信頼できる方法でそれを測定できる人はいないと思います。したがって、気にする必要はありません。そして、とにかくループバックを使用している場合(上記のように)、安全側にいます。
どちらの要求も、インターフェイスに送信される前にカーネルルーティングテーブルにヒットすることになります。ループバックアドレスにカーネル内の最適化がない限り、影響はありません。
接続時にチェックする必要のあるファイアウォール/ルーティングルールの数が少ないため、127.0.0.1を介して接続することによるパフォーマンス上の利点はおそらく信じられないほど小さい(目立たない)でしょう。
オプションがある場合は、unixドメインソケット(通常はのようなもの/tmp/mysql.sock
)を介して接続します。この方法で接続すると、パフォーマンスが確実に向上し、セキュリティも向上します。
編集
MarcBのコメントによると、どうやら経由localhost
で接続すると、ドメインソケット経由で自動的に接続が試みられます。述べたように、これは好ましい最もパフォーマンスの高い方法です。
サーバー上に非常に奇妙なネットワーク構成がない限り、パフォーマンスは同じであるはずです。
ガイドラインについては、それによって異なりますが、将来的にデータベースサーバーが変更される可能性がある場合は、アプリケーションが後でその構成を読み取れるように、そのURLをxmlファイルまたは任意のファイルに保存する必要があります。そうすることで、IPを使用したり、ホスト名やローカルホストを使用したりすることを心配する必要がなくなります。これについては、DynamicDnsを調べてみることもできます。
サーバーが変更される可能性が低い場合は、あまり心配する必要はありません。サーバーのIPが変更された場合に備えて、IPの代わりに「localhost」を使用してください。ファイルオプションはまだ良い習慣ですが、それを使用しなくてもそれほど害はありません。