Php 远程文件存在问题

Php 远程文件存在问题,php,zend-framework,fwrite,zend-pdf,Php,Zend Framework,Fwrite,Zend Pdf,我正在创建pdf文档以供下载,例如,有人单击了pdf链接,然后生成了pdf,浏览器将打开包含该pdf文件路径的新窗口。问题是,在创建文件后的40-50秒内,浏览器为该文件提供404未找到错误,但在这之后,当我刷新浏览器时,该文件将显示以供查看或下载 一个pdf链接是您可以查看文件的地方,但同一url提供的404在创建后并没有立即找到。我使用以下代码来编写文件 try{ $fh = fopen($filename, "w");

我正在创建pdf文档以供下载,例如,有人单击了pdf链接,然后生成了pdf,浏览器将打开包含该pdf文件路径的新窗口。问题是,在创建文件后的40-50秒内,浏览器为该文件提供404未找到错误,但在这之后,当我刷新浏览器时,该文件将显示以供查看或下载

一个pdf链接是您可以查看文件的地方,但同一url提供的404在创建后并没有立即找到。我使用以下代码来编写文件

      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();
        }

该调用是ajax,它在pdf完成时回显文件名,然后将该文件名附加到url和i use window.open()以打开带有pdf链接的新窗口,该链接给出404 not found error。有人知道为什么会发生此错误吗?

首先,您需要确定是Zend pdf问题还是常规Web服务器问题。尝试手动创建虚拟1字节文件,并检查它是否会显示相同的延迟


它们取决于您的Web服务器配置—有些可能具有激进的文件系统属性缓存,因此没有通用的答案,您需要检查相应的配置选项。

使用php标头在浏览器上直接输出pdf

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

因此,不要使用ajax,而是使用url创建pdf代码打开新窗口。

如果我使用fread代替文件内容,那么我得到的文件内容是可变的,但如果我将相同的url带到浏览器,那么它会给出404 not found。当然还有其他一些问题,比如在远程服务器上写入文件的处理延迟等。这肯定不是Zend_pdf问题为什么
fopen
fwrite
当存在
Zend_pdf::save
$this->save($filename)
)时,你能描述一下过程吗。单击pdf按钮使服务器。。。还有一个。这将有助于更好地理解您的问题。我单击pdf按钮,这是一个向服务器发出的ajax请求,将生成pdf并将其存储在文件夹中。Ajax请求将输出pdf文档的路径。使用此路径,我们将打开新窗口以显示生成的pdf。