Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP下载问题:不成功,连接速度慢_Php_Download - Fatal编程技术网

PHP下载问题:不成功,连接速度慢

PHP下载问题:不成功,连接速度慢,php,download,Php,Download,我已经被这个问题困扰了好几天了,还没有找到解决问题的方法 我想做什么: 我正在尝试使用PHP下载PDF,对于可以在大约一分钟半内下载的文件,代码运行得非常好。在我家的wifi上,我可以在10秒内下载159MB的文件,而且每次都能正常工作。但当我将互联网速度限制在“快速3G”(大约170KB/s,以模拟较慢的办公速度)时,下载失败。几乎每一次,它都是在下载过程的3分24秒中完成的,但有时它的下载时间较短,只有1分57秒 我所尝试的: 我已经调整了php.ini文件(将max_execution_t

我已经被这个问题困扰了好几天了,还没有找到解决问题的方法

我想做什么:

我正在尝试使用PHP下载PDF,对于可以在大约一分钟半内下载的文件,代码运行得非常好。在我家的wifi上,我可以在10秒内下载159MB的文件,而且每次都能正常工作。但当我将互联网速度限制在“快速3G”(大约170KB/s,以模拟较慢的办公速度)时,下载失败。几乎每一次,它都是在下载过程的3分24秒中完成的,但有时它的下载时间较短,只有1分57秒

我所尝试的:

我已经调整了php.ini文件(将max_execution_time设置为0,并以比最初配置的128M更高的间隔设置内存限制)

我尝试过其他的下载方法,这些方法似乎可以“分块”较大的PDF文件。这几乎是不成功的。在一个实例中,下载将完成,但在尝试打开PDF时会出现错误。根据这个解决方案的海报,它只是UTF-8编码文件的有效解决方案,我发现我正在处理的是UTF-16。(我认为这是与print()函数的某种不兼容

我已经确定,如果使用URL中的直接链接,该文件可以下载。这样做没有问题,但这只是为了测试,不能成为永久解决方案,因为我正在处理的PDF包含敏感信息。因此,基于此结果,我至少能够将问题缩小到与PHP相关,而不是IIS。

这是我目前使用的代码

标题(“内容描述:文件传输”);
标题(“内容类型:应用程序/八位字节流”);
标题(“Pragma:public”);
标题(“到期日:0”);
标头(“缓存控制:必须重新验证,后检查=0,前检查=0”);
标题(“内容类型:应用程序/强制下载”);
标题(“内容类型:应用程序/下载”);
标题('Content-Disposition:attachment;filename=“”.basename($file)。“”);
标题(“内容传输编码:二进制”);
标题('Content-Length:'.filesize($file));
//$file是PDF的完整路径
while(ob_get_level()){
ob_end_clean();
}
readfile($file);
冲洗();
出口
/*我意识到它可能是关闭的,但它至少是为了更快地加载工作
时间和现在一样,所以我暂时不去管它*/
我试图包含任何似乎相关的信息,但如果有任何其他信息有用,请让我知道!我还将确保包含处理我在文章顶部提到的下载过程的当前代码。

而不是

readfile($file);
冲洗();
我会试试看

$handle=fopen($file,'r');
而(!feof($handle)){
埃科·弗莱德(8192美元);
冲洗();
}
fclose($handle);
您可能需要调整上述参数以处理正确的编码,但这将取决于您的环境,而不是

readfile($file);
冲洗();
我会试试看

$handle=fopen($file,'r');
而(!feof($handle)){
埃科·弗莱德(8192美元);
冲洗();
}
fclose($handle);

您可能需要调整上面的内容以处理正确的编码,但这取决于您的环境

我感谢您的回复!我尝试了这个方法,但仍然存在相同的问题。我一直在试图找出原因,但我仍然非常坚持。当您说“调整上面的内容以处理正确的编码”时,请你澄清一下你的意思好吗?我想我现在还不太了解,无法取得进展。谢谢!所以我花了更多的时间在这方面,但仍然没有找出问题所在。PDF下载中途停止并且不成功(通常每次都以相同的下载进度结束),或者该文件已完全下载,但随后已损坏且无法打开。您知道这可能是什么原因吗?谢谢!我感谢您的回复!我尝试了此操作,但仍然存在相同的问题。我一直在尝试找出原因,但我仍然非常坚持。当您说“调整上述内容以处理正确的编码”时,请你澄清一下你的意思好吗?我想我现在还不太了解,无法取得进展。谢谢!所以我花了更多的时间在这方面,但仍然没有找出问题所在。PDF下载中途停止并且不成功(通常每次都以相同的下载进度结束),或该文件已完全下载,但随后已损坏且无法打开。是否了解原因?谢谢!