대용량 PHP 파일을 다운로드할 수 없는 문제에 대한 해결 방법: 먼저 다운로드할 파일 이름을 가져온 다음 "set_time_limit(0) 메서드"를 통해 스크립트의 최대 실행 시간을 설정하고 마지막으로 캐시를 지웁니다. .
추천: "PHP 비디오 튜토리얼"
최근에 고객의 사진을 다운로드한 다음 PS 사진 편집을 수행해야 하는데 다운로드한 파일이 필요합니다. 원본 카메라 파일 cr2 문서. 이런 종류의 파일은 일반적으로 상대적으로 큽니다. 일반적으로 사진은 30M 정도로 너무 작습니다. 이제 다운로드가 완료된 후 신경 쓰지 않았습니다. 이제 Photoshop에서 사진을 열 수 없습니다. 처음에는 소프트웨어에 Camera Raw가 설치되어 있지 않아서 그런 줄 알았는데, 플러그인을 설치한 후에도 여전히 열리지 않는 것을 발견했습니다. 마지막으로 다운로드한 사진과 업로드하기 전의 사진을 비교해 보았습니다. 원본 사진보다 훨씬 작습니다. 이때 다운로드한 사진이 아마도 불완전한 것으로 나타났습니다. Baidu에서 검색한 결과 PHP 스크립트의 실행 시간에 문제가 있는 것으로 나타났습니다. 일반적인 기본값은 30초이며, 구성을 설정한 후 문제를 해결할 수 있습니다.
set_time_limit(0);은 시간 제한이 없음을 의미하므로 아래에 다운로드 코드를 게시하겠습니다. 이 기능을 직접 사용할 수 있습니다
//fname为要下载的文件名 //$fpath为下载文件所在文件夹,默认是downlod function download($fpath="download/"){ //获得要下载的文件名 $pathinfo=pathinfo($fpath); $filename=$pathinfo['filename'].'.'.$pathinfo['extension']; //避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk // $filename=iconv('utf-8', 'gb2312', $fname); $downpath=$fpath; if(!file_exists($downpath)){//检测文件是否存在 echo "文件不存在!"; die(); } // //设置脚本的最大执行时间,设置为0则无时间限制 set_time_limit(0); $fp=fopen($downpath,'rb');//只读方式打开 $filesize=filesize($downpath);//文件大小 // echo $filesize; // die; //返回的文件(流形式) header("Content-type: application/octet-stream"); //按照字节大小返回 header("Accept-Ranges: bytes"); //返回文件大小 header("Accept-Length: $filesize"); //这里客户端的弹出对话框,对应的文件名 header("Content-Disposition: attachment; filename=".$filename); //清除缓存 ob_clean(); flush(); //设置分流 $buffer=4096; //来个文件字节计数器 $count=0; while(!feof($fp)&&($filesize-$count>0)){ //设置文件最长执行时间 set_time_limit(0); $data=fread($fp,$buffer); $count+=$data;//计数 echo $data;//传数据给浏览器端 } fclose($fp); }
문제 해결에 도움이 되기를 바랍니다
위 내용은 대용량 PHP 파일을 다운로드할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!