2013-04-07 1 views
1
나는 "나쁜 게이트웨이 오류 (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(); 

은}

이 나는 ​​절대적으로 "불량 게이트웨이 오류"와 경험은, 당신의 도움이 아주 많이 감사하지 않은!

덕분에, 매트

답변

0

나는 문제를 해결했습니다.

이유는 zip 파일을 생성하는 데 5 초 이상 걸렸고 게이트웨이 서버의 시간 제한 및 KeepAliveTimeout 설정이 5 초 였기 때문입니다. (httpd.conf에서 편집 할 수 있습니다)

제한 시간을 60 초로 늘려서 문제가 해결되었습니다.

관련 문제