2010-10-21 109 views
0

我有一個小的web界面,上傳一個文件在服務器上,然後轉儲該文件在oracle數據庫。但其中有大約700萬條記錄,並且Web服務器在讀取和轉儲該文件時會超時。 有人可以告訴我如何保持該會話活着,以便它在上傳,讀取和轉儲數據分貝時不會超時?如何在PHP中保持持久的http連接?

夥計們,我說的是當用戶上傳一個文件時它將被採用的時間,它將被轉儲到db ....現在7百萬條記錄是巨大的,Web服務器肯定會超時。 ..如果oracle超時,那麼該怎麼辦.....我知道它的困惑,但我不想讓用戶知道他的文件不會被轉儲到db ...異步機制不是一個選項在這種情況下...我現在使用apache

這是一個簡單的腳本,目前爲止,很少的html對象和php。並且我必須在php中使... =)

預計您的寶貴迴應。 感謝

+1

顯然,對您之前的問題的回覆中有75%沒有那麼有價值。 – 2010-10-21 11:51:50

+0

請問您可以添加一些更多的細節,特別是關於您想要「持續」連接的位置?你的腳本和oracle之間或客戶端和你的腳本之間?另外,當你說有一個超時(在什麼時間之後)時,找到一種方法來增加超時邊界而不是使用持久連接(這可能不是你正在尋找的那個)是更可行的。 – Gordon 2010-10-21 11:54:08

+0

超時可能是一個服務器的問題,記得HTTP是一個無狀態的協議 – Hannes 2010-10-21 11:54:10

回答

-3

有沒有這樣的事,作爲一個「持久的HTTP連接」

我怎樣才能保持該會話活着

HTTP是無狀態的,因此會話管理不是由協議來實現 - 也與你描述的問題無關。

和Web服務器獲取超時

也許如果你告訴我們什麼web服務器它是那麼我們可能已經能夠表明操作超時的方式。

此外,你不會說爲什麼你認爲它的超時問題,而不是其他問題(例如文件大小限制),並且你沒有區分上載和隨後的數據加載作爲腳本的點失敗。

....但解決問題的正確方法是在文件上傳後啓動獨立的獨立進程來執行數據加載。有一個谷歌'長時間運行的PHP進程setsid'

+3

*(nitpick)* http://en.wikipedia.org/wiki/HTTP_persistent_connection – Gordon 2010-10-21 12:22:12

+0

老闆請再次檢查問題...我現在提到你想要的信息... – awaiskhan200 2010-10-25 07:47:10

1

爲了保持腳本運行,把這段代碼放在php文件的開頭。我認爲這隻有在您直接調用該文件時纔有效。我的意思是,如果php文件包含,我不相信。

set_time_limit(0); 
header('Connection: close'); 
ignore_user_abort(); 

從這裏: http://php.oregonstate.edu/manual/en/features.connection-handling.php

希望這有助於 伊斯梅爾。