2014年11月4日火曜日

リクエスト処理の流れ: eventMPM コネクション処理フロー

コネクション処理フロー

worker_thread()、process_socket()とlistener_thread()の処理を概観して、コネクションのconn_state_e情報と処理の流れを図にした。



accept待ちのListenソケットがlistener_threadで接続を受け付けて、workerスレッドのprocess_socketでのリクエスト処理/出力処理を経て、ソケットを閉じたり、次リクエスト受け付けを待つという流れになっている。
青い四角がworkerスレッドの処理、黄色い四角がlistenerスレッドの処理。ソケットクローズは、listenerスレッドで行われる。ただ、これは正常系の場合で、既に見てきているように、ソケットのクローズは、エラー時などには別のタイミングでも実行されている。

SUSPENDED状態を持つタイムアウト処理は、いまのところmod_dialupにしか実装は見当たらない。
タイムアウト処理をSUSPENDED状態の中で繰り返し、処理を終えると、ソケットを閉じる処理に向かっている。


0 件のコメント:

コメントを投稿