2010-08-24 9 views
0

예를 들어 다운로드 용 pdf 문서를 만듭니다. 누군가가 PDF 링크를 클릭하면 pdf가 생성되고 브라우저는 pdf 파일의 경로로 새 창을 엽니 다. 문제는 브라우저가 파일을 만든 후 약 40-50 초 동안 해당 파일에 대해 404 개의 오류를 찾을 수 없다는 것입니다. 이후에는 파일을 보거나 다운로드하기 위해 브라우저가 새로 고침됩니다.원격 파일 존재 문제

하나의 PDF 링크를 사용하면 파일을 볼 수 있습니다 http://images.myvouchercodes.co.uk/mvclocal/pdf/ca3b5098-9b35-7d8e.pdf하지만 동일한 URL (404)가 생성 한 후 즉시 찾을 수 있습니다. PDF 링크를 새로운 창을 열려면 내가 파일을 아약스입니다 전화

 try{ 
      $fh = fopen($filename, "w");       
      $contents = $this->render(); // return pdf contents in string   
      if(fwrite($fh, $contents)) 
      {   
       $fh = fopen($filename, "r");      
       while(strlen(file_get_contents($filename)) != strlen($contents)) 
       { } 
       echo $filename; 
      } 
      else 
      { 
       throw new Exception ("Unable to create pdf"); 
      } 
      fclose($fh); 

     } 
     catch(Exception $e) 
     { 
      echo $e->getMessage(); 
     } 

을 작성하는 다음 코드를 사용하고 있으며 PDF 완료시 파일 이름을 메아리,이 파일 이름이 URL에 추가되고, i는 window.open()를 사용 그건 404 오류를 찾을 수 없습니다. 아무도 왜이 오류가 발생하는지 알 수 있습니까?

+1

왜'Zend_Pdf :: save'이 ('$ this-> 저장 ($ 파일 이름)')이'fopen'와'fwrite'? – teemitzitrone

+0

저장 기능과 동일합니다. –

+1

당신은 그 과정을 설명 할 수 있습니까? pdf 버튼을 클릭하면 서버가 ... 그렇게됩니다. 이게 당신의 문제를 더 잘 이해하는 데 도움이 될 것입니다. – teemitzitrone

답변

1

사용 PHP 헤더.

+0

thats 내가 한 일 –

1

먼저, 당신은 젠드 PDF 문제 또는 일반적인 웹 서버 하나의 경우 분리 할 필요가있다. 더미 1 바이트 파일을 수동으로 생성하고 동일한 지연이 표시되는지 확인하십시오.

웹 서버 구성에 따라 달라질 수 있습니다. 일부는 공격적인 파일 시스템 속성 캐싱을 가질 수 있으므로 보편적 인 대답이 없으므로 해당 구성 옵션을 확인해야합니다. 직접 브라우저에

$contents = $this->render(); 
header('Content-type: application/pdf'); 
header('Content-disposition: inline; filename=nijman.pdf'); 
header('Content-length: ' . strlen($contents)); 
echo $contents; 

을 PDF로 출력 그래서 대신 PDF 코드를 생성의 URL과 아약스 열린 새 창에서 작업을 수행하는

+0

내가 file_get_contents 대신 fread를 사용하면 파일 내용이 달라 지지만 브라우저에 동일한 URL을 사용하면 404가 발견되지 않습니다. 원격 서버 등에서 파일을 작성하는 데 지연을 처리하는 것과 같은 다른 문제가있을 수 있습니다. Zend_pdf 문제가 아닙니다. –