> 백엔드 개발 > PHP 튜토리얼 > Apache와 PHP를 사용하여 간단한 장기 폴링을 구현하는 방법은 무엇입니까?

Apache와 PHP를 사용하여 간단한 장기 폴링을 구현하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-31 02:16:09
원래의
391명이 탐색했습니다.

How to Implement Simple Long Polling Using Apache and PHP?

간단한 긴 폴링 구현

많은 리소스에서 긴 폴링의 개념을 설명하지만 실제 구현 예는 아직 파악하기 어렵습니다. 복잡한 프레임워크나 서버 구성에 의존하지 않고 단순화된 버전을 살펴보겠습니다.

서버 통신에 Apache와 PHP 사용

서버 요청을 처리하려면 Apache가 적합합니다. 아래 PHP 스크립트는 무작위 간격 후에 무작위 문자열을 보내 실시간 메시지 도착을 시뮬레이션합니다. 가끔 시연 목적으로 오류를 반환하는 경우가 있습니다.

<?php
if (rand(1, 3) == 1) {
    header("HTTP/1.0 404 Not Found");
    die();
}
sleep(rand(2, 10));
echo("Hi! Have a random number: " . rand(1, 10));
?>
로그인 후 복사

Long Polling용 JavaScript 클라이언트

JavaScript에서 Long Poller는 지속적으로 위 스크립트를 요청하고 대기합니다. 응답:

<script type="text/javascript">
function waitForMsg() {
    $.ajax({
        type: "GET",
        url: "msgsrv.php",

        success: function(data) {
            // Display the message
            $("#messages").append("<div class='msg new'>" + data + "</div>");

            // Recursively invoke waitForMsg
            setTimeout(waitForMsg, 1000);
        },
        error: function() {
            // Display the error message and restart the process after 15 seconds
            $("#messages").append("<div class='msg error'>Error encountered</div>");
            setTimeout(waitForMsg, 15000);
        }
    });
}

$(document).ready(function() {
    waitForMsg();
});
</script>
로그인 후 복사

이 스크립트는 지속적으로 서버 업데이트를 확인하고 들어오는 메시지를 표시합니다. 오류 처리 기능이 통합되어 있으며 긴 폴러는 지정된 시간 초과 기간 후에 다시 연결을 시도합니다.

장기 폴링의 장점

장기 폴링은 여러 가지 이점을 제공합니다.

  • 회복력: 인터넷 연결이 끊어지는 경우 클라이언트는 자동으로 복구하고 다시 연결할 수 있습니다.
  • 확장성: 독립형 서버는 웹사이트 성능에 영향을 주지 않고 여러 개의 동시 긴 폴링 요청을 처리할 수 있습니다.
  • 단순성: 서버 측과 클라이언트 측 모두 코드가 간단하고 구현하기 쉽습니다.

위 내용은 Apache와 PHP를 사용하여 간단한 장기 폴링을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿