[英]php - how to determine execution time?
我必須大量處理更多圖像,(10 mb /圖像)
如何確定執行隊列中所有圖像的執行時間?
根據我們的數據確定時基。
設置時間限制。
運行過程。
執行時間取決於什么? (服務器,互聯網速度,數據類型...?)
@全部:我已經更改了處理問題的方式,發送了1reqeust / 1image,
因此,如果有40張圖片,我們將有40個請求。 無需擔心執行時間:D
謝謝
您可以使用代碼測試設置
// first image
$start = time();
// ... work on image ...
$elapsed = time() - $start;
if (ini_get('max_execution_time') > $elapsed * $imageCount)
trigger_warning("may be not able to finish in time", E_USER_WARNING);
請注意兩件事:在PHP的CLI版本中,將max_execution_time硬編碼為0 / inifinity(根據此注釋 )。 另外,您可以通過再次調用set_time_limit()
來重置計時器,如下所示:
foreach ($imagelist as $image) {
// ... do image work ....
// reset timer to 30
set_time_limit(30);
}
這樣,您可以讓腳本永久運行,或者至少直到完成圖像處理為止。 您必須在apache-configuration中啟用適當的覆蓋規則,以通過AllowOverride All
允許此操作
我建議(鑒於問題中有限的信息)建議您嘗試使用試錯法-運行您的過程,並查看需要花費多長時間-增加完成之前的時間-您可能可以縮短過程。
請注意,服務器的處理時間可能會不同,這取決於其他進程在服務器上當前的負載。 如果是共享服務器,則其他用戶可以在此確切時間運行某些腳本,從而使腳本也只能執行一半。
我認為在腳本運行之前很難確定執行時間。
我將上傳一批(小組)圖像。 圖像數量將取決於某些測試。
例如,在不同的頁面上同時運行腳本幾次,以查看它們是否仍然完整而沒有中斷。 如果它可以處理隊列中的5張圖像,請編寫腳本以處理5張圖像。 在處理完前五個圖像后,將它們存儲(寫入數據庫或您需要的任何內容),稍等片刻,然后拍攝下五個圖像。
如果在同時運行三個腳本且每個腳本包含5個圖像的情況下可以正常工作,則應該與服務器上的其他任何用戶一起安全地執行一次。
您可以在文件php.ini
更改時間執行時間限制,或者,如果您無權訪問該文件,則可以使用set_time_limit(600)
設置600秒。 但是,我會編寫更智能的代碼,而不是依賴時間限制。
我的五分錢。 祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.