먼저 짧은 링크와 긴 연결의 차이점을 소개합니다.
짧은 연결
Connect ->데이터 전송->연결 닫기(권장 학습: PHP 프로그래밍 초보부터 숙련까지)
예를 들어 HTTP는 상태 비저장 짧은 링크입니다. 브라우저와 서버가 HTTP 작업을 수행할 때마다 연결이 설정되지만 작업이 완료되면 연결이 중단됩니다.
구체적으로, 브라우저 클라이언트는 TCP 연결을 시작하고 설정합니다. -> 클라이언트가 HttpRequest 메시지를 보냅니다. -> 서버가 메시지를 받습니다. ->서버 핸들을 프런트 엔드에 보내고 즉시 소켓.close를 호출합니다. ->클라이언트는 응답 메시지를 받습니다. ->클라이언트는 결국 서버로부터 TCP 연결을 끊으라는 신호를 받습니다. ->클라이언트는 특히 close 메소드를 호출하여 TCP 연결을 끊습니다.
이렇게 말할 수도 있습니다. 짧은 연결은 SOCKET이 연결된 후 데이터를 보내고 받은 후 즉시 연결이 끊어지는 것을 의미합니다.
데이터 수신 후 연결이 끊어지기 때문에, 데이터가 접수 및 처리될 때마다 연락이 되지 않습니다. 이것이 HTTP 프로토콜이 상태 비저장인 이유 중 하나입니다.
긴 연결
연결->데이터 전송->연결 유지->데이터 전송->..........->한 쪽이 연결을 닫을 때까지(주로 클라이언트) 연결을 닫습니다.
긴 연결이란 SOCKET 연결을 설정한 후 사용 여부에 관계없이 연결 상태를 유지하지만 보안이 취약하다는 의미입니다.
PHP 스크립트에 액세스할 때마다 모든 PHP 스크립트가 실행된 후에만 반환 결과를 얻습니다. 지속적으로 실행하기 위해 스크립트가 필요한 경우 작업 목적을 달성하려면 PHP 긴 연결을 사용해야 합니다.
일반적인 PHP 환경은 apache+php+linux 이지만 apache는 PHP 연결에 시간 제한이 있기 때문에 일반적으로 apache 서버는 이 연결 시간이 초과되면 자동으로 연결을 끊습니다.
이 경우 더 간단하고 편리한 방법은 PHP 페이지에서 set_time_limit(0)을 설정하는 것입니다(물론 php.ini 구성 파일에서도 설정할 수 있지만 이는 전체 환경에 영향을 미칩니다. 모두, 모든 연결을 제한하고 싶지는 않습니다. 장시간 연결하면 서비스 성능에 영향을 미칠 수 있습니다)
각 PHP 스크립트는 실행 시간을 제한하므로 set_time_limit를 통해 스크립트 실행 시간을 무제한으로 설정해야 합니다. 언제든지 스크립트의 반환 값을 출력하려면 플러시() 및 ob_flush()를 사용하여 서버 버퍼 영역을 지웁니다.
<?php header("Content-Type: text/plain"); set_time_limit(0); while( true ) { // 持续执行的脚本 flush(); ob_flush(); sleep(5); } ?>
실행하면 5초마다 실행됩니다. 이 방법을 통해 백그라운드 모니터링 프로그램, 예약 실행 기능, 로그 분석, 데이터 정렬 및 기타 시간이 많이 걸리는 작업과 같은 많은 기능을 완료할 수 있습니다.
위 내용은 PHP 긴 연결과 짧은 연결의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!