2013-11-26 39 views
1

我有一個ajax圖像上傳器,發送圖像到php腳本,以便他們被驗證/調整大小&保存到一個目錄。 ajax上傳器允許同時上傳多個文件。由於它允許多個文件可以超時,所以我想用set_time_limit來增加執行時間。但是我無法確定需要設置多少時間,因爲默認值是30秒。 1分鐘就夠了嗎?這些圖像在我的本地機器上正確上傳,但我想到共享主機服務會出現超時錯誤。任何想法&關於別人如何實施的想法將是有價值的。謝謝。防止圖像上傳的PHP超時異常

+2

而不是遍歷並處理服務器端的所有圖像上傳,爲什麼不遍歷客戶端上的每個文件併爲每個圖像運行一次PHP腳本? – maiorano84

+0

@ maiorano84的建議是一個非常好的建議。此外,所需的時間量將取決於圖像的大小。如果我們正在談論個人資料圖片,比如說200 kB,那麼30秒就足夠了。如果我們正在談論巨大的,高分辨率的全景鏡頭,或醫學圖像或其他大型文件,一分鐘可能太短。 –

+0

@ maiorano84我發送每個上傳的個人請求。所以這意味着我爲每個圖像處理一次。問題是我允許同時上傳,這可能會增加所需的時間。 – codeGEN

回答

1

如果需要,您可以將其設置爲5分鐘。但是出於顯而易見的原因,你並不是真的想要這麼高,特別是對於http調用。

所以......如果我有精力,這就是我會做...

我需要:

process_initializer.php

process_checker.php

客戶端.html

the_process.php(作爲背景運行)

...

客戶端將文件上傳到process_initializer。

初始化創建一個唯一的ID,也許是基於關閉的時間毫秒或其他一些先進的解決方案

初始化啓動一個後臺進程,它發送類似的文件名所需的參數與ID

初始化響應沿ID爲

客戶端然後輪詢process_checker看到發生了什麼事情與ID(可能會有20秒的時間間隔 - 的setTimeout(),等等)

process_checker米ay檢查文件output_ID.txt是否存在,當進程完成時應該創建output_ID.txt文件,如果文件不存在,則響應客戶端沒有準備好的文件,如果有,可以將輸出發送到客戶端,然後客戶端可以做任何事情。


當Apache運行PHP的,它使用一個php.ini配置,當你在命令行或類似exec('php the_process arg1 arg2')另一個腳本運行PHP時,將使用此不同的php.ini,下文稱作爲PHP CLI或者類似的東西,除非你有php cli配置爲使用與apache相同的php.ini。重要的是,它們有可能使用不同的設置,所以你可以讓cli腳本比你的http腳本佔用更多的時間。