我使用tricks(推)技術寫得聊天室程式

我使用tricks(推)技術寫得聊天室程式,頁面不需要刷新,另外也不會像ajax似的不斷請求server端.

set_time_limit(9990);
header('cache-control: private');
header('Content-Type: text/html; charset=utf-8');
$file="chat.txt";

$action=trim($_GET['action']);
Switch ($action){
Case "say":
    _say();
    Break;
Case "chat":
    _chat();
    Break;
Default:
    _main();
    Break;
}
//------------------------------------------------*
Function _main(){
    Echo '<iframe src="?action=chat" height="300" width="100%"></iframe>';
    Echo '<form method="post" id="f1" target="say" action="?action=say"><input type="text" name="wd"><input type="submit" value="say"></form>';
    Echo '<iframe name="say" style="display:none"></iframe>';
}
//------------------------------------------------*
Function _say(){
    Global $file;
    $wd = trim($_POST['wd']);
    IF(File_Exists($file)){
        $htm=File_Get_Contents($file).$wd.Chr(10);
    }Else{
        $htm=$wd.Chr(10);
    }

    File_Put_Contents($file,$htm,LOCK_EX);
    clearstatcache();
}
//------------------------------------------------*
Function _chat(){
    Global $file;
    IF(!File_Exists($file)){
        File_Put_Contents($file,'',LOCK_EX);
    }

    //这一行是为了IE的bug
    Echo str_repeat(' ', 256);
    ob_flush();
    flush();

    $total = Count(File($file));
    $i = $total - 1;

//如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}
    While(true){
        $N=Count(File($file));
        IF($N!=$total){
            $total = $N;
            $HTM=File($file);
            Echo '<div>',Htmlspecialchars(End($HTM)),'</div>';
            ob_flush();
            flush();
        }Else{
            usleep(1500);
        }
    }
}

posted @ 2011-06-03 23:51  已經停更  阅读(201)  评论(0编辑  收藏  举报