php 텍스트 파일 다운로드

이 자습서에서는 대용량 파일을 효율적으로 읽고 쓰는 방법에 대해 더 많이 생각할 수 있도록 몇 가지 새로운 아이디어(또는 메모리 새로 고침)를 소개했습니다. 스트림과 생성기에 익숙해지기 시작하고 file_get_contents 같은 기능 사용을 중지하면 전체 오류 범주가 응용 프로그램에서 사라집니다. 그것은 목표로 하는 좋은 것 같습니다! 내가 찾은 스크립트의 대부분은 파일의 캐시 된 버전을 사용하지 않도록 브라우저를 말하는 헤더 호출을 포함. 캐싱은 내가 테스트 한 브라우저에서 문제가되지 않았지만 문제가되면 스크립트에 다음 줄을 추가하십시오 (readfile()에 대한 호출 위). 한 파일에서 다른 파일로 스트리밍 (또는 파이핑)을 시도 해 봅시다 : PHP readfile() 함수는 PHP 파일을 포함하여 파일을 그대로 읽습니다. GET 또는 POST 양식 데이터(또는 사용자가 스푸를 사용할 수 있는 다른 데이터)를 사용하여 실제 파일 이름을 전달하는 경우 주요 보안 허점이 열립니다. 호기심이 많은 사용자는 ?file=.와 같은 것을 입력하여 중요한 데이터베이스 연결 정보 또는 기타 시스템 데이터에 쉽게 액세스할 수 있습니다. /포함/db_connection.php. 중요한 정보에 대한 무단 액세스를 방지하기 위해 항상 일종의 식별자를 사용해야 합니다. fwrite()의 첫 번째 매개 변수에는 쓸 파일의 이름이 포함되며 두 번째 매개 변수는 작성할 문자열입니다. 이 장에서는 서버의 파일을 만들고 쓰는 방법을 설명합니다. 이제 “newfile.txt”에는 일부 데이터가 포함되어 있으므로 쓰기위해 기존 파일을 열 때 어떤 일이 발생하는지 보여줄 수 있습니다.

모든 기존 데이터가 지워지고 빈 파일로 시작합니다. 우리는 파일 “newfile.txt”에 두 번 썼다. 우리가 파일에 작성 할 때마다 우리는 먼저 “John Doe”를 포함하고 두 번째는 “Jane Doe”를 포함하는 $txt 문자열을 보냈습니다. 작성을 마친 후 fclose() 함수를 사용하여 파일을 닫았습니다. 존재하지 않는 파일에 fopen()를 사용하는 경우 파일이 (w) 또는 부가 (a)를 위해 열리면 파일이 생성됩니다. 이것은 우리가 자주 겪는 문제가 아니지만 대용량 파일로 작업 할 때 엉망이되기 쉽습니다. 비동기 응용 프로그램에서는 메모리 사용에 주의를 두지 않을 때 전체 서버를 쉽게 다운시킬 수 있습니다. stream_context_create()로 만든 유효한 컨텍스트 리소스입니다. 데이터 매개 변수를 단일 차원 배열로 지정할 수도 있습니다. 이는 file_put_contents($filename, implode(`, $array))와 동일합니다. 어떤 추측 우리가 지금 사용 하는 얼마나 많은 메모리? 텍스트 문서를 1,216개의 청크로 분할하더라도 여전히 459KB의 메모리만 사용한다는 사실을 알고 놀랄 까요? 생성기의 특성을 고려할 때 가장 많이 사용하는 메모리는 가장 큰 텍스트 청크를 반복에 저장해야 한다는 것입니다. 이 경우 가장 큰 청크는 101,985자입니다.

일반적으로 이미지, zip 파일, PDF 문서, EXE 파일 등을 다운로드하기 위해 PHP와 같은 서버 측 스크립팅 언어를 반드시 사용할 필요는 없습니다.