私は(SOや他のサイトの無数の投稿を読んで)永続的な接続は大多数の開発者の間であまり愛されていないことを知っています(スクリプトが突然終了した場合、接続は閉じられず、いくつかのテーブルをロックしたままにしておくことができます、など)しかし、それは本当に悪いですか?
私の開発マシン(T3400デュアルコアCPU、4ギガバイトのRAM、および5400RPMハードディスク)では、永続的接続を使用しているか非永続的接続を使用しているかによって、ページの読み込み時間が大きく異なります。非持続的接続の場合は2.09秒、持続的接続の場合は(おおよそ)68ミリ秒と大きく異なります。以下に、非永続的なスクリーンショットと永続的なスクリーンショットの2つのサンプルスクリーンショットを示します。
持続的接続のリスクは理解していますが(概念は興味深いと思い、それを探求したいと思いますが、実際には日常的に使用していません)、閉じていない接続を検出する方法はありませんか?
たとえば、mysqliと同等ですchange_user
が、PDO、またはある種のPHPスクリプトの場合、サーバーはX秒ごとにcronジョブとして実行され、残りをチェックして、その後、それらを閉じますか?私は読んでいましregister_shutdown_function
たが、正しく理解していれば、スクリプトが終了すると呼び出されるので、実際には、スクリプトが終了するたびに永続的な接続を閉じるのを終了する可能性があります。それとも私は間違っていますか?
編集
正確を期すために、ソフトウェアスタックについて言及するのを忘れたので、それを修正させてください。私の現在のスタックは、次の要素で構成されています:Windows 7 (x86) SP1
OSとして、、Apache 2.4.3
(PHP 5.4.9
私は常に最新バージョンで動作します)およびMySQL 5.5.28
。スタックを次のように実行しますlocalhost
(おそらく専用のマシンに移行しますが、今のところ、このままです)。