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