搜尋

首頁  >  問答  >  主體

php7.0+TP5 使用ZipArchive壓縮大檔案逾時問題及負載問題

想諮詢一下各位大佬,我壓縮檔案時,不管怎麼設定超時時間壓縮請求都在1分鐘時提示504超時,nginx php 都設定了不管用,管理軟體是phpstudy,系統centos7.

還有一個問題,ZipArchive壓縮時,我想提高壓縮速度,怎麼處理?壓縮時伺服器負載最高就只到16%。

_Sun_Sun545 天前770

全部回覆(2)我來回復

  • 大瓶可乐@php.cn

    大瓶可乐@php.cn2023-07-07 16:22:38

    關第一個問題,如果您已經在Nginx 和PHP 中設定了逾時時間,但仍然遇到504 逾時錯誤,可以嘗試以下幾個解決方案:1. 檢查PHP-FPM 的逾時設定:開啟php -fpm.conf 文件,找到`request_terminate_timeout` 參數,並將其值增加為更長的時間(以秒為單位),然後重啟PHP-FPM。 2. 檢查Nginx 的逾時設定:開啟nginx.conf 文件,在`http` 區塊中新增或修改下列參數:  

    proxy_connect_timeout 600s;   
    proxy_send_timeout 600s;   
    proxy_read_timeout 600s;   
    fastcgi_send_timeout 600s;   
    fastcgi_read_timeout 600s;

    3. 檢查伺服器資源限制:確保伺服器的資源(CPU、記憶體、磁碟空間)足夠處理壓縮請求。如果伺服器資源不足,可能會導致壓縮過程耗時較長並觸發逾時。 4. 調整壓縮演算法和參數:某些壓縮演算法可能比其他演算法更快。您可以嘗試使用不同的壓縮演算法或調整 ZipArchive 的參數來提高壓縮速度。例如,可以使用 `setCompressionMethod()` 方法設定不同的壓縮方法,或使用 `setCompressionLevel()` 方法調整壓縮等級。關於第二個問題,如果伺服器負載僅達 16%,表示系統資源並未完全利用。這可能是因為 ZipArchive 壓縮過程主要由 CPU 運算而非磁碟或網路操作所致。在這種情況下,您可以嘗試以下方法來提高壓縮速度:1. 使用更快的壓縮演算法:某些壓縮演算法比其他演算法更快。您可以嘗試使用較快的壓縮演算法,例如 Deflate 演算法(`ZipArchive::CM_DEFLATE`)。 2. 調整壓縮參數:透過調整 ZipArchive 的參數,例如設定不同的壓縮等級、視窗大小等,可能會影響壓縮速度。您可以根據實際情況進行嘗試和優化。 3. 並行處理:如果您有多個文件需要壓縮,可以考慮並行處理多個文件,以提高整體的壓縮速度。例如,使用多執行緒或進程池同時處理多個檔案。請注意,在優化伺服器效能和提高壓縮速度時,請確保系統資源充足,並避免超出伺服器承載能力導致效能問題。此外,請記得合理使用伺服器資源,並遵守相關規定和最佳實務。

    回覆
    1
  • _Sun

    謝謝可樂哥,我透過設定您說的參數,程式在壓縮的時候能提升到150S左右,但是之後又報Bad Gateway,實在找不到哪裡還有對這一塊的限制。還有可樂哥您能詳細說一下設定ZipArchive的壓縮方法這一類方法怎麼用嗎,我查了手冊,小白一枚,實在是沒看懂。 。還有並行處理,能詳細說一下嗎。謝謝可樂哥了!

    _Sun · 2023-08-22 17:03:05
  • 取消回覆