2011-10-03 132 views
1

我目前正在研究一個上傳腳本,支持較大的上傳(〜50 Mb),我很快就遇到了問題!我使用傳統的POST請求,將表單上傳到臨時位置,稍後使用PHP進行移動。當然,我已經更新了我的php.ini文件,以支持稍大於默認文件和大約15 Mb的文件上傳真的很好!PHP POST請求超時

主要問題是由於我的託管公司。他們讓腳本在60秒後超時,這意味着超過60秒完成的POST請求將在臨時文件到達PHP腳本之前死亡,這自然會產生內部服務器錯誤。

無法啓動服務器上的超時(激烈辯論後)我在考慮選項。有沒有辦法凹凸的請求或以某種方式刷新它來通知服務器並重置計時?或者有沒有其他的上傳方法不超時?

+0

我不知道,POST提交是定時和腳本timout的一部分,我從來沒有遇到過這個問題,並已上傳超過300MB(私人應用程序)。 – Jakub

+0

使用PHP,任何上傳相關的設置必須(在httpd.conf /或的.htaccess覆蓋)通過php.ini文件級別的設置來完成。他們不能通過的ini_set改變,因爲上載有完成之前,PHP將開始執行你的代碼,以達到這些設置。使用客戶端的基於Flash/Java的上傳器分塊上傳時,沒有任何事情可做。 –

回答

0

非常困難。到目前爲止,您最簡單的選擇是傾倒硬頭的主持人,選擇一個能夠提高生產力的主持人。我個人使用TSOHost - 與他們在一起已經一年半了,迄今爲止絕對沒有理由抱怨(甚至沒有輕微的煩惱)。

0

有幾件事情你可以考慮。每個人都有成本,你需要確定哪一個成本最低。

  1. 獲取一個新的託管公司。這可能是你最好的解決方案。

  2. 設計相當複雜的客戶端系統,打破了上傳到多個塊,並通過AJAX提交他們。這很醜陋,特別是因爲它只能用於繞過主機規則。

我真的會研究#1。

+0

我想這就是你得到的選擇一個便宜的託管解決方案:P感謝您的超快速回信:) –

+0

我們很多人有T恤。活到老,學到老。 –

0

你確定它是超時問題嗎?我的第一個想法...

  • 由於在php服務器php.ini文件中設置了配置限制,transferrt失敗。你需要在你的腳本來改變它或將其設置爲本地設置

    #發現它在你的配置中使用的php.ini memory_limit的= 96M 的post_max_size = 64M 的upload_max_filesize = 64M

或者直接你的腳本

ini_set('memory_limit', '96M'); 
ini_set('post_max_size', '64M'); 
ini_set('upload_max_filesize', '64M');