php readfile-请教:PHP readfile实现下载的问题?

问题描述

请教:PHP readfile实现下载的问题?

请各位大牛给我诊断一下,以下问题可能是那块错了?

如下采用readfile实现下载的功能,在附件较大时失败;我做过以下尝试:
1. 下载的文件较小时是正常的;
2. 当文件大于128多兆后,则出错;PHP.INI中配置不同表现不同:
a. memory_limit = 128M时,获取的文件大小是0字节,文件是空;
b. memory_limit = -1时,提示网站连接有问题;

其它配置:
max_execution_time = 0
default_socket_timeout = -1

总体感觉缓存不够或什么超时了?请大牛指点一二,谢谢诶

if(file_exists(ROOT_PATH."$url"))
{

$filetype=substr(strrchr($url,'.'),1);
ob_end_clean();
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: attachment; filename='."$true_name.$filetype");
header('Content-type: '.$filetype);
header('Content-Length: '.filesize(ROOT_PATH."$url"));
readfile(ROOT_PATH."$url");
exit;
}

解决方案

难道是最大只支持128M?若是这样,那超过128M的如何实现?

时间: 2024-08-22 14:07:52

php readfile-请教:PHP readfile实现下载的问题?的相关文章

下载提示-请教,csdn的下载频道的提示用户下载了资源的功能怎么实现的,数据库太大了,不能直接调数据

问题描述 请教,csdn的下载频道的提示用户下载了资源的功能怎么实现的,数据库太大了,不能直接调数据 csdn的下载频道的提示用户下载了资源的功能怎么实现的,数据库太大了,不能直接调数据,请教一下 解决方案 数据库太大了就不能调数据了,你用的数据库难道是玩具么?不通过数据库怎么知道用户是否下载了资源?难道靠猜么?难道你根本不知道数据库是怎么一回事?比如如何设计合理的表结构以及建立索引? 解决方案二: 一般是服务器做记录,想减轻服务器负担用客户端的dom存储也行,但是数据不持久,客户端可以清除.D

请教关于struts2附件下载的功能

问题描述 按照网上的方法写好了ACTION 方法和配置文件.但是点下载的时候不能弹出保存对话框,后台也不报错.是怎么回事啊.<actionname="download"class="downloadAction"method="getexecute"><resultname="success"type="stream"><paramname="inputPath&qu

文件系统函数库:readfile

readfile (PHP3 , PHP4) readfile ---&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 输出文件 语法 : int readfile (string filename [, int use_include_path]) 说明 : 读取文件并且将它写到标准输出. 传回从文件读取的位元组大小,如果发生错误则此函数传回false,而且会显示出错误讯息,除非是以@readfile( )的方式

php 目录与文件处理-郑阿奇(续)

1.文件目录操作 最顶层止录是磁盘根目录,用'/'或'//' 当前目录 ./ ../表示apache的目录即htdocs目录 1.创建与删除目录 mkdir 复制代码 代码如下: <?php if(mkdir("./path",0700)) //在当前目录中创建path目录 echo "创建成功"; ?> 2.获取和更改当前目录 使用getcwd()函数可以取得当前的工作目录,该函数没有参数.成功则返回当前的工作目录,失败则返回FALSE 3.打开和关闭

php header函数的详解

发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔 例1  代码如下 复制代码 <?PHP Header("Location: http://www.111cn.net";); exit; //在每个重定向之后都必须加上"exit",避免发生错误后,继续执行. ?> 禁止页面在IE中缓存  代码如下 复制代码

php 目录与文件处理-郑阿奇(续)_php基础

1.文件目录操作 最顶层止录是磁盘根目录,用'/'或'//' 当前目录 ./ ../表示apache的目录即htdocs目录 1.创建与删除目录 mkdir 复制代码 代码如下: <?php if(mkdir("./path",0700)) //在当前目录中创建path目录 echo "创建成功"; ?> 2.获取和更改当前目录 使用getcwd()函数可以取得当前的工作目录,该函数没有参数.成功则返回当前的工作目录,失败则返回FALSE 3.打开和关闭

php header函数常见用途

header函数在PHP中是发送一些头部信息的, 我们可以直接使用它来做301跳转等,下面我来总结关于header函数用法与一些常用见问题解决方法.  发送一个原始 HTTP 标头[Http Header]到客户端.标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔.  1.重定向.  Header("Location: http://www.mobiletrain.org");  exit; //在每

php生成带logo二维码方法小结_php技巧

一.使用的类库 1.phpqrcode(php库) 2.qrcode.js(javascript库) 二.phpqrcode的使用 只用php的类库,也就是二维码的生成在后台操作.因为要在后台生成带logo的二维码,那么首先必须将logo图片上传至服务器(在上传这里我用了webuploader) phpqrcode使用方法: 首先下载phpqrcode:http://phpqrcode.sourceforge.net/ 然后在使用之前记得引入phpqrcode.php文件 $value = $u

PHP中header函数的用法及其注意事项详解_php实例

void header ( string $string [, bool $replace = true [, int $http_response_code ]] ) : Send a raw HTTP header 下面有一些使用header的几种用法: 1.使用header函数进行跳转页面: header('Location:'.$url); 其中$url就是将要跳转的url了. 这种用法的注意事项有以下几点: •Location和":"之间不能有空格,否则会出现错误(注释:我刚

使用HTML5的File实现base64和图片的互转

刚接触到一个内联图片的概念,内联图片即使把图片文件编码成base64 看下面代码即是内联问题 可以减少http的请求,缺点是不能跨域缓存!   复制代码 代码如下: <img src="data:image/jpeg;base64,/9j/4QqsRX..." alt=""> 然后在线如何把图片转化成base64 如果只依靠单纯的javascript是有权限问题的 js不允许操作本地的file文件或文件夹 为了安全问题 现在html5来了 百度了下有不少