簡體   English   中英

PHP-如何確定執行時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM