搜索

首页  >  问答  >  正文

php7.0+TP5 使用ZipArchive压缩大文件超时问题及负载问题

想咨询一下各位大佬,我压缩文件时,不管怎么设置超时时间压缩请求都在1分钟时提示504超时,nginx php 都设置了不管用,管理软件是phpstudy,系统centos7.

还有一个问题,ZipArchive压缩时,我想提高压缩速度,怎么处理?压缩时服务器负载最高就只到16%。

_Sun_Sun545 天前773

全部回复(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
  • 取消回复