我使用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);
}
}
}