PHPソケット拡張機能(基本的には関連するLinuxシステムコールのラッパー)を使用してsocket(2)
おり、後続のリクエストで1つのリクエストを処理しているときに開いたソケットを再利用したいと考えています。パフォーマンスは重要な要素です。
私が開いているソケットはすべて同じIPであるため、他の機能を使用pfsockopen()
できなくなり(毎回同じ単一のソケットを再利用するため)、一度に複数のソケットが必要になります。
質問
あるリクエストを処理するために開いたソケットを意図的に開いたままにして(またはを呼び出さsocket_close()
ないsocket_shutdown()
)、まったく同じパラメーターを持つソケットを次のリクエストを処理する同じIPに接続します。Linuxは以前に開いたソケット/ファイル記述子を再利用しますか?
私が最後にやりたいのは、すべてのリクエストでTCPハンドシェイクを回避することです。
追加情報:
私はapacheワーカーMPMを使用しています。つまり、異なる要求が異なるプロセスから提供される可能性がありますが、必ずしも提供されるとは限りません。簡単にするために、すべてのリクエストが同じプロセスから提供されると仮定しましょう。
PHPで開いて接続されているソケットのファイル記述子IDを取得できます。開いたり、読み書きしたりすることはできますが
/dev/fd/{$id}
、目的はありません。リモートサーバーと通信していません(これは単純なアプローチかもしれません)。誰かがこの仕事をする方法を知っていれば、私はそれも受け入れられる答えだと思います。