リクエストが処理されると、phpはインスタンスを「クリーン」にし、リソースやその他の変数を解放します。これはいくつかのステップで行われます。 fastcgiはリクエスト後もプロセスを存続させるため、すべてのステップが実行されるわけではなく、すべてのメモリが解放されるわけでもありません。たとえば、 mysql_pconnect()
によって使用されるEG(persistent_list) 、 pg_pconnect()
、...このリストは、プロセスが存続している限り、リクエスト間で空になりません(実際の実装によっては空になる可能性がありますが、EG(persistent_list)の目的に反する可能性があります)。永続的な接続を使用する場合、スクリプトは前のリクエスト中に確立された「再利用」接続を取得する可能性があります。
プリペアドステートメントを直接(再)使用するには、そのステートメント(およびその接続)の識別子が必要です。 (php-)postgresqlを使用する場合、これは単に pg_execute()<に渡す(接続に関して)一意の文字列です。 / a> 、したがって、スクリプトは、別のインスタンスによって以前に準備されたステートメントにアクセスするのに問題はありません(同じ接続を使用します)。
mysqli
または
期待できるのは、MySQLのサーバー側のクエリキャッシュ
。最近のバージョン(リンクを参照)では、プリペアドステートメントを使用するときにステートメントを認識する場合があります。しかし、それでも実際に準備されたステートメントを再利用することはありません:
したがって、私が間違っていなければ、現在、phpでの以前のリクエスト中に作成されたmysqlステートメントを再利用することはできません。