>백엔드 개발 >PHP 튜토리얼 >PHP는 데이터 전송을 최소화합니다: 클라이언트 측에 데이터를 저장합니다.

PHP는 데이터 전송을 최소화합니다: 클라이언트 측에 데이터를 저장합니다.

WBOY
WBOY원래의
2016-08-08 09:34:048599검색

프로그램을 다른 언어로 내보내는 것은 프로그래머들이 좋아하는 것 중 하나입니다.
가 WEB에 있습니다. 두 가지 다른 프로그래밍 환경: HTTP 프로토콜의 정의에 따른 클라이언트(브라우저) 및 서버 측,
클라이언트에서 다른 언어를 출력하는 서버 프로그램을 작성할 수 있습니다
서버측 언어와 JavaScript가 클라이언트 출력으로 사용됩니다. 이 질문에서는 사용 방법을 보여 드리겠습니다.
이 솔루션은 클라이언트 측에 데이터를 저장하고 채팅방, 뉴스 시스템 또는 원하는 곳에 표시합니다
구현된 애플리케이션은 서버와 클라이언트(브라우저) 간의 데이터 전송을 최소화합니다.

지원 요청 대상:
PHP4
자바스크립트
프레임

주요 아이디어:
       
우리는 PHP를 사용하여 HTTP 프로토콜 기반의 채팅방(HTTP CHAT ROOM)을 개발하려고 노력해 왔습니다.
HTTP 프로토콜은 채팅에 적합한 프로토콜은 아니지만 방화벽이나 프록시의 영향을 받지 않습니다.
PHP는 JAVA APPLETS를 사용하지 않고도 이 기능을 완벽하게 구현할 수 있습니다. 채팅방에는 두 가지 주요 문제가 있습니다.
첫째, IE는 SERVER PUSH 기술을 지원하지 않기 때문에 CLIENT PULL 기술만 사용할 수 있습니다(즉,
클라이언트에서 자동 새로 고침), 두 번째 문제는 훨씬 더 심각합니다. 아이디어는 클라이언트에서 새로 고치는 것이기 때문에 서버
서버는 매번 모든 메시지를 전송해야 하는데, 이는 엄청난 양의 데이터 전송을 의미하며, 이는 채팅방 지연의 주요 원인이기도 합니다
주된 이유 때문에 이 기사는 문제를 해결하려고 시도합니다.
프레임 기술(프레임)을 사용하면 다른 페이지를 다시 로드하지 않고도 지정된 페이지를 새로 고칠 수 있습니다.
서비스/클라이언트(C/S) 데이터 전송량을 줄이기 위해. 우리 모델은 이 계획을 기반으로 합니다.
"마스터" 파일: 프레임워크 구조 정의
"로더" 페이지: 데이터 가져오기
"표시" 페이지: 데이터 표시
이 솔루션에서는 "loder" 상자가 "x"초마다 자동으로 새로 고쳐집니다. 아이디어는 데이터를 "마스터"에 저장하는 것입니다.
따라서 "loder" 페이지는 클라이언트가 가지고 있지 않은 서버의 데이터만 요청하면 됩니다.
각 메시지를 기록하여 클라이언트에 전송해야 하는 메시지와 전송하면 안 되는 메시지를 결정합니다. PHP4.0 세션 관리(세션)를 사용합니다
타임스탬프가 서버와 클라이언트 모두에 표시되도록 클라이언트의 마지막 업데이트 타임스탬프를 저장합니다. "로더" 파일
"마스터" 파일에서 데이터가 수신되면(참고: "마스터" 파일은 크지만 한 번만 전송됩니다) 디스플레이 페이지("diaplay")를 새로 고칩니다.
"디스플레이" 페이지는 "마스터" 파일에 있는 "displaymsgs()"라는 자바스크립트 함수를 호출하여 메시지를 표시합니다. 이 기능은 동적으로 표시됩니다
"마스터" 파일에 저장된 데이터는 일반적인 흐름도입니다.
1. 브라우저는 "마스터" 페이지(프레임)를 요청하고 "마스터" 페이지는 서버에서 클라이언트(브라우저)로 전송된 다음 "마스터" 페이지를 전송합니다.
파일은 프레임워크를 생성하고 "로더" 및 "디스플레이" 페이지를 클라이언트에 전송합니다.
2. 서버 측에서는 "로더" 파일이 분석됩니다. 클라이언트가 "타임스탬프" 세션 변수를 정의하지 않으면 "loder" 파일은
이 됩니다. 서버에서 모든 데이터를 가져와서 자바스크립트 코드를 생성하여 "마스터" 파일에 데이터를 저장한 다음 "timestamp" 변수를
로 저장합니다. 세션 변수.
3. "loder" 페이지는 "디스플레이" 페이지를 새로 고치는 자바스크립트 코드를 생성합니다.
4. 새로 고침 요청으로 인해 "display" 페이지에서 "diaplaymsgs()" javascript 함수를 호출하여 데이터를 표시합니다.
5. "x"초마다 2단계로 돌아가세요

다음과 같이 생각해볼 수 있습니다.
================================================= ======
"마스터" 파일: 매우 크며, displaymsgs() 함수를 정의하고 데이터와 초기 값을 저장합니다.
"로더" 파일: 작으며 서버에서 데이터를 검색하고 자바스크립트 코드를 생성합니다.
"display" 파일: 매우 작으며 "master" 파일의 "diaplaymsgs()" 함수 호출
================================================= =======
참고: "마스터" 파일은 한 번만 전송됩니다.
"loder" 및 "display" 파일은 "x"초마다 새로 고쳐집니다.
"loder"는 첫 번째 전송 중에는 매우 클 수 있지만 앞으로는 매우 작을 것입니다
"diaplay" 파일은 변경되지 않은 상태로 유지됩니다.

위의 아이디어에 대해 여전히 명확하지 않은 경우 아래에서 방법을 자세히 설명하기 위해 채팅방을 구성하겠습니다. 이 채팅방은 단지 간단한 시연을 위한 것입니다
따라서 별로 유용하지 않을 수도 있지만 이 아이디어를 사용하면 더 복잡한 채팅방을 만들 수 있습니다. 이 아이디어는 채팅방에만 적용되는 것이 아닙니다. :)

먼저 MySQL 데이터베이스 양식을 사용하세요.
============================
          테스트 가능한 테이블 생성(
타임스탬프 날짜/시간,
텍스트 );
============================
"마스터" 파일은 다음과 같습니다.
=================================================
~              라인=새 배열()
함수 디스플레이msgs() {
for(i=0;i                     display.document.write(lines[i])
                     display.document.write('
')
~                                                                       ~                                     <프레임 이름="display" src="display.php">             <프레임 이름="form" src="form.php">                                                           =================================================
​ ​ 참고: "양식" 파일은 사용자에게 입력 음성 상자를 제공하는 음성 상자입니다.

"표시" 파일 내용:
=====================
~ Top.displaymsgs()
~          ====================
"디스플레이" 파일이 작나요? :)
                                 
"로더" 파일:
         ====================
~
session_start(); // 여기서 세션을 사용하세요!
If(!isset($timestamp)) {
//"timestamp"가 정의되지 않은 경우 정의하고 0으로 설정
              $timestamp=0;                                                 ~
         $dab=mysql_connect("localhost","user","passWord") // 데이터베이스 열기
Mysql_select_db("testbase",$dab)

              // 고객이 가지고 있지 않은 정보 찾기
         $query="테스트 가능한 곳에서 *를 선택하세요. 타임스탬프>'$timestamp'";
         $result=mysql_query($query,$dab)
          $msgs=array();                        
                    // 이 루프에서는 최신 뉴스/데이터를 저장하고 "타임스탬프"를 현재 최대값으로 설정합니다.
                                 
​​​​while($res=mysql_fetch_array($result)) { 
             $msgs[]=$res["message"]
If($res["timestamp"]>$timestamp) {
                 $timestamp=$res["timestamp"]
~      ~ Session_register("timestamp"); // "timestamp" 변수 등록

에코 '<스크립트>';
               // 이 루프에서는 자바스크립트 코드를 생성합니다
// 서버에서 얻은 최신 데이터를 "마스터" 페이지에 저장합니다(참고: "top"을 사용하여 최상위 창(마스터)을 가리킵니다.
                                 
for($i=0;$i<$count($msgs);$i++) {
                                                                   top.lines[top.lines.length]="";
~ ~
​​​​ //이제 "디스플레이" 페이지를 새로 고치기 위해 "javascript" 코드를 생성하겠습니다.

        ?>
          top.display.location.reload();
~
                                                                         ~ ======================================
                                 
"양식" 페이지:
         ====================
~
세션_시작()

If (!isset($timestamp)) {
                  $timestamp=0;                                ~
                // 양식을 표시하고 "타임스탬프" 변수를 생성합니다.
If (isset($msg)) {
                 $dab=mysql_connect("localhost","root","seldon")
Mysql_select_db("testbase",$dab)
               $query="테스트 가능한(타임스탬프, 메시지) 값에 삽입(now(),'$msg')"
Mysql_query($query,$dab)
// timeStamp를 얻은 후의 모든 메시지
                 $query="테스트 가능한 곳에서 *를 선택하세요. 타임스탬프>'$tt'"
                  $result=mysql_query($query,$dab)
$msgs=배열();$i=0;$timestamp=0
~ >                    $msgs[]=$res["메시지"];  
                    if($res["timestamp"]>$timestamp) {  
                            $tt=$res["타임스탬프"];  
                    }  
                }  
                session_register("타임스탬프");  
                 
            ?>  
              <스크립트>  
                                for($i=0;$i<$count($msgs);$i++) {  
            ?>  
                top.lines[top.lines.length]="";  
                          }  
              ?>  
            top.display.location.reload(); //刷새"display"页
                
             }  
    ?>  
    

" method="게시물">  
    메시지:  
      
      
    ================================================= ===
    注:我们使得在"form"页提交发言时,马上刷new"display"页face,这可以达到对发言人来说马上发言马上
    显示,更体现实时性。
     
 

以上就介绍了php最客户端存储数据,包括了客户端存储数据 方 内容,希望对PHP教程兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.