“坏网关错误502”尝试下载时,服务器生成的.zip文件

“坏网关错误502”尝试下载时,服务器生成的.zip文件

问题描述:

我得到一个“坏网关错误502”尝试下载服务器生成的.zip文件“坏网关错误502”尝试下载时,服务器生成的.zip文件

我已经当孤立导致错误的行;它是:

$zip->addFile($thumb->loadVersion($version['id']), $rank . "_" . $thumb->filename); 

这是我的代码。我的脚本遍历用户上传的所有.jpg文件,将它们捆绑到一个大的.zip文件中,并为.zip文件发送下载标头。

function downloadGalleryZip() { 

    $tmpfile = tempnam("tmp", "zip"); 
    $zip = new ZipArchive(); 
    $res = $zip->open($tmpfile, ZipArchive::OVERWRITE); 

    if ($res === TRUE) { 

    // loop through gallery 

    $sql = "SELECT * FROM files_versions WHERE file_id = ". $this->fileId . " AND deleted_on IS NULL ORDER BY rank ASC"; 
    $result = db_query($sql); 
    $rank = 0; 

     while ($version = mysql_fetch_array($result)) : 
      $rank ++; 
      $rank = str_pad($rank, 3, '0', STR_PAD_LEFT); 
      $thumb = new fancyFile(); 
      $zip->addFile($thumb->loadVersion($version['id']), $rank . "_" . $thumb->filename); 

     endwhile; 

     // $zip->addFromString('000_info.txt', 'Dieser Ordner wurde am ' . date("d.m.Y", time()) . ' heruntergeladen.'); 
     $zip->close(); 
    } 


    $filename = getCaptionFromFile($this->fileId) . ".zip"; 

    header("Connection: Keep-Alive"); 
    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=" . $filename); 
    header("Content-Type: application/zip"); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Content-Length:' . filesize($tmpfile)); 
    ob_clean(); 
    flush(); 

}

我绝对跟“坏网关错误”没有经验,你的帮助是非常赞赏!

谢谢, 马特

我已经解决了这个问题。

生成zip文件的原因花费了5秒多,我的网关服务器的Timeout和KeepAliveTimeout设置为5秒。 (你可以在httpd.conf中编辑)

我把超时时间增加到了60秒 - 问题解决了。