2011-07-11 60 views
0

我有一個用C編寫的FCGI應用程序。我們有一些客戶端關閉活動連接的情況 - 如果可能,在頁面加載期間離開頁面 - 我們希望在應用程序內檢測該頁面。我們的網絡服務器(nginx)配置爲在客戶端連接意外關閉時關閉FCGI連接,所以我希望通過在事務結束時查看FCGI流狀態,我們可能會能夠檢測到客戶端啓動的關閉連接。如何使用FCGI檢測客戶端終止的連接?

我的問題是:是否有可能在調用FCGX_Finish_r()之前在輸出流上使用FCGX_GetError()檢測此問題?如果不是,我怎麼可能陷入這樣的狀況呢?

我試着詢問FastCGI郵件列表,但似乎列表已關閉。

回答

0

如果數據已經在插座傳送和發生了錯誤,FCGX_GetError()將返回errno,你也可以檢測到這種使用FCGX_PutStr() < 0。 libfcgi使用8192字節的大小在內部緩衝輸出流,當調用FCGX_Finish_r()時,發送任何剩餘的緩衝區。

0

當客戶端關閉連接時,您應該收到SIGPIPE。通常,忽略此信號是安全的。但是如果你需要檢測這個,只需安裝SIGPIPE的處理程序。

相關問題