Yii 2 프레임 워 크 의 웹 을 읽 고 포맷 클래스 Response 로 되 돌려 줍 니 다.

15472 단어 프레임
완전한 네트워크 요청 은 마지막 으로 프로 토 콜 에 맞 는 반환 이 필요 합 니 다.Yii 2 는 웹 요청 을 처리 한 후 웹 / Response 처 리 를 통 해 일괄 적 으로 되 돌 아 옵 니 다.오류 도 오류 처 리 를 통 해 Response 로 돌아 갑 니 다.
하나의 Response 의 완전한 절 차 는 어떤 것들 이 있 습 니까?
  • 응답 대상 생 성, Resonse 응답 형식 json, html, xml 등 설정
  • 선행 사건 을 촉발 하고 노출 조작 은 개발 자 에 게 출력 하기 전에 데 이 터 를 조정 하 는 등
  • 데이터 포맷.모든 response 의 내용 을 응답 하 는 문자열 로 출력 하고 http 반환 코드 를 확인 합 니 다.
  • 응답 헤드 를 설정 합 니 다.모든 자동 반환 헤드 와 http 프로 토 콜 반환 헤드 를 출력 합 니 다.
  • 출력 내용.문자열 내용 을 출력 하고 버퍼 를 새로 고 칩 니 다
  • 후 치 사건 을 촉발 합 니 다.Response 를 터치 한 후 동작
  • 데이터 정리
  • Yii 2 의 Response
  • http 상태 코드 가 명확 합 니 다.웹 / Response 파일 에서 상태 코드 배열 을 정의 하고 http 상태 코드 를 거의 포함 하 며 표 시 된 상태 코드 문자 설명 을 제공 합 니 다.http 상태 코드 를 알 고 싶다 면 Yii 2 Response 파일 을 보면 충분 합 니 다.
  • 다양한 방식 의 파일 출력 을 지원 합 니 다.sendFile 은 파일 을 다운로드 하고 sendContentAsFile 은 내용 을 클 라 이언 트, xsendFile 파일 에 파일 로 보 내 다운로드 합 니 다.
  • 파일 을 보 낼 때마다 최대 8M 의 데 이 터 를 읽 고 과도 한 메모리 사용 을 방지 합 니 다
  • 데이터 형식 으로 다양한 데이터 형식 html, json, xml 을 지원 하 며 ResponseFormatter 를 지정 하여 데이터 형식 을 확장 할 수 있 습 니 다
  • Cookie 처리, Yii 2 의 요청 Cooke 는 Request 에서 처리 되 지만, 응답 Cookie 는 Response 에서 처리 합 니 다.이것 은 Thinkpp 5 와 다른 프레임 워 크 에 비해 다르다.하지만 이런 분업 이 명확 한 디자인 은 분명 하 다.

  • 전체적으로 말 하면 Yii 2 의 Response 코드 의 논리 구조 가 상당히 뚜렷 하고 출력 내용 은 http 프로 토 콜 규범 을 매우 규범 적 으로 따른다.또한 사전 이벤트, 데이터 준비 사전 이벤트, 사후 이 벤트 는 개발 자 에 게 서로 다른 상황 에서 추가 데 이 터 를 처리 합 니 다.코드 는 읽 기 에 매우 명료 하 다.처음부터 끝까지 온전 하 게 한 번 보면 완전히 이해 할 수 있다.다음은 Response 의 두 단락 코드 입 니 다.
    출력 내용 코드
        protected function sendContent()
        {
            if ($this->stream === null) {
                echo $this->content;
    
                return;
            }
            set_time_limit(0); // Reset time limit for big files
            $chunkSize = 8 * 1024 * 1024; // 8MB per chunk
            if (is_array($this->stream)) {
                list ($handle, $begin, $end) = $this->stream;
                fseek($handle, $begin);
                while (!feof($handle) && ($pos = ftell($handle)) <= $end) {
                    if ($pos + $chunkSize > $end) {
                        $chunkSize = $end - $pos + 1;
                    }
                    echo fread($handle, $chunkSize);
                    flush(); // Free up memory. Otherwise large files will trigger PHP's memory limit.
                }
                fclose($handle);
            } else {
                while (!feof($this->stream)) {
                    echo fread($this->stream, $chunkSize);
                    flush();
                }
                fclose($this->stream);
            }
        }
    

    특별한 건 없어 요.간단 한 문자열 이 라면, 직접 echo.주로 stream 을 처리 하 는 상황 을 봅 니 다.
    우선 시간 초과 설정.파일 흐름 을 읽 는 데 필요 한 시간 을 정할 수 없 기 때문에 시간 초과 설정 이 필요 합 니 다.
    최대 읽 기 길 이 를 설정 합 니 다.모든 요청 은 일정한 메모 리 를 차지 하여 데 이 터 를 처리 해 야 한다.내 가 신청 한 메모 리 를 제한 하여 php 프로그램의 메모리 부족 을 피하 기 위해 서 파일 읽 기 프로그램 에 대해 읽 기 제한 을 설정 해 야 합 니 다.읽 고 바로 새로 고침.
    파일 다운로드 요청 헤더 설정
    public function setDownloadHeaders($attachmentName, $mimeType = null, $inline = false, $contentLength = null)
        {
            $headers = $this->getHeaders();
    
            $disposition = $inline ? 'inline' : 'attachment';
            $headers->setDefault('Pragma', 'public')
                ->setDefault('Accept-Ranges', 'bytes')
                ->setDefault('Expires', '0')
                ->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
                ->setDefault('Content-Disposition', $this->getDispositionHeaderValue($disposition, $attachmentName));
    
            if ($mimeType !== null) {
                $headers->setDefault('Content-Type', $mimeType);
            }
    
            if ($contentLength !== null) {
                $headers->setDefault('Content-Length', $contentLength);
            }
    
            return $this;
        }
    

    다운로드 파일 의 응답 을 출력 하려 면 Yii 2 의 출력 요청 헤더 에 다음 과 같은 내용 이 있 습 니 다.
  • Pragma: Public 필수
  • Expires: 0 필수
  • Cache - Control: must - revalidate, post - check = 0, pre - check = 0 필수
  • Content - Disposition: 파일 이름 필수
  • 수락 - 범위: bytes 필수
  • Content - Type: 파일 mime 필수
  • Content - Length: 파일 길 이 는 반드시
  • 요청 헤드 를 설정 하면 내용 을 출력 할 수 있 습 니 다.브 라 우 저 에서 다운로드 알림 상자 가 팝 업 됩 니 다.

    좋은 웹페이지 즐겨찾기