我有一个在我的本地计算机上运行良好的下载脚本。但在上传到服务器后,当我的ios应用程序调用脚本时,它会在100-120秒后停止。我刚刚将脚本更改为另一台服务器。它工作得很好。我不知道服务器中缺少什么配置(下载期间有问题)?我google了很多,但仍然没有解决方案。所以我的问题是如何解决这个问题?什么是真正的问题?我的一个谷歌搜索达到了Xscend-file的程度。但我怀疑它是否支持部分下载?我的脚本是..
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime_type = finfo_file($finfo, ROOT_PATH."/file_folder/".$file_name);
$file = ROOT_PATH."/file_folder/".$file_name;
$filesize = filesize($file);
$offset = 0;
$length = $filesize;
if ( isset($_SERVER['HTTP_RANGE']) ) {
$partialContent = true;
preg_match('/bytes=(\d+)-?/', $_SERVER['HTTP_RANGE'], $matches);
$offset = intval($matches[1]);
$length = $filesize - $offset;
}
else {
$partialContent = false;
}
$file = fopen($file, 'r');
fseek($file, $offset);
$data = fread($file, $length);
fclose($file);
if ( $partialContent ) {
header('HTTP/1.1 206 Partial Content');
header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}
//header("X-Sendfile: $file_name");
header('Content-Description: File Transfer');
header("Content-type: " .$mime_type);
header('Content-Disposition: attachment; filename="' . $file_name. '"');
//header('Content-Transfer-Encoding: binary');
//header('Expires: 0');
//header('Cache-Control: must-revalidate');
//header('Pragma: public');
header('Content-Length: ' . $length);
header('Accept-Ranges: bytes');
print($data);
答案 0 :(得分:0)
在服务器的php.ini文件中设置最大执行时间
答案 1 :(得分:0)
尝试此代码下载文件
$ filename =将是您要下载的完整路径的文件名
和
下载文件后,$ filename2 =将是您的文件名
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$filename2);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_clean();
flush();
readfile($filename);
exit;