發新話題 Report thanks

Server Push >2.長時間運作注意事項

Server Push >2.長時間運作注意事項
網頁特性

基本上不論是什麼樣的型態使用server push 都必須注意,client 的瀏覽器一定要“源源不絕”的給資料。
只要沒資料輸出在*設定的時間之後還是會timeout。

*設定的時間:我還不知道影響的參數在哪。

文字

沒新資料至少也要繼續給最後一筆
複製內容到剪貼板
代碼:
<!--xxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->

<head>

<style>
.new_display {
BORDER-BOTTOM:0;
BORDER-LEFT:0;
BORDER-RIGHT:0;
BORDER-TOP:0;
height:32px;
font-size:24px;
</style>

</head>

<form method="get"action="view.php"id="ff"name="ff">
<input type="text"name="aaa"class="new_display"style="width:700px;">
</form>

<?php
$sql ="SELECT *FROM listen ORDER BY sid DESC LIMIT 1";

while(1){
//echo $sql;
$query =mysql_query($sql );
$row =mysql_fetch_object ($query );
$sid =$row->sid;
$message =$row->message;

if ($sid !='')echo "<script>document.ff.aaa.value="$message";</script>";
flush();
sleep(1);
}

?>
圖片

1.10秒後就算沒更新還是要重新給一次
2.圖檔必須使用javascript new Image()預先載入圖檔
複製內容到剪貼板
代碼:
<head>

<script>
img1=new Image();
img1.src ="open_door.jpg";
img2=new Image();
img2.src ="close_door.jpg";
</script>

</head>

<!--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<?php
$sql ="SELECT *FROM listen WHERE viewed='n'ORDER BY sid DESC LIMIT 1";

$i =0;
while(1){
//echo $sql;
$query =mysql_query($sql );
$row =mysql_fetch_object ($query );
$sid =$row->sid;
$message =$row->message;

if ($sid !=''){

// 門
if ($message =='open_door')
$show ="<div id="Layer1"style="position:absolute;width:640;height:480;z-index:1;left:0;top:0;"><img src="open_door.jpg"border=0></div>";
echo $show;

if ($message =='close_door')
$show ="<div id="Layer1"style="position:absolute;width:640;height:480;z-index:1;left:0;top:0;"><img src="close_door.jpg"border=0></div>";

mysql_query("UPDATE listen SET viewed='y'WHERE sid='$sid'");
}

if ($i%10==0)echo $show;

$i++;

ob_flush();
flush();
sleep(1);
}

?>
最後提醒!

一定要確保client 的瀏覽器可以一直收到資料,不管是什麼資料...

from:http://www.hoyo.idv.tw/ho ... iew.php?sid=200
如果您喜歡這篇文章,請按「讚」或分享給您的朋友,以示鼓勵。

TOP

thanks