2010-06-20 12 views
2

我需要實現一個簡單的項目使用PHP和MySql,其中我需要推動數據到用戶的用戶界面時,其他人正在更新數據庫,我需要定期這樣做也是如此,所以當其他人訪問同一個表並修改它時,另一個使用UI的人可以看到更新,如果我很傻,但是到現在爲止我只知道將數據保存到數據庫並檢索並顯示給用戶(最簡單的數據庫連接形式)。我怎麼能在PHP中實現這一點,請有人幫助我解決這個問題,如果答案詳細解釋了這些事情是很好的,因爲我非常喜歡這個新手。提前感謝。如何定期推送數據到用戶界面在php

rangana。

+1

你不能用PHP做到這一點,你必須定期從客戶端UI查詢/輪詢以檢查新的更新。 – Pentium10 2010-06-20 16:49:48

+1

ajax ajax ajax! – 2010-06-20 16:50:11

回答

1

如果網頁沒有數據返回,然後讓頁面等待一段,而輪詢數據庫。您必須使用睡眠語句來避免最大化您的服務器。

警告:某些服務器不會讓用戶打開另一個頁面,而這可能會導致您在某些情況下出現問題。因此,要麼不打開頁面太久,要麼嘗試讓ajax頁面使用不同的會話。

// do this when you have put new data in to database 
setappdata("lastupdate",microtime(true)); 

// use this loop to poll for new data 
$loop = 0; 
$lastupdate=$_SESSION["lastupdate"]; 
while ($lastupdate==$last=getappdata("lastupdate") and $loop<10) { 
    $loop++; 
    usleep(500000); //0.5sec 
}  

// use a table called appdata to store application data 
function getappdata($var) { 
    $query = "SELECT data FROM appdata WHERE var='$var'"; 
    $res1=mysql_query($query); 
    if (mysql_numrows($res1)<1) return false; 
    return mysql_result($res1,0,"data"); 
} 

function setappdata($var,$data) { 
    $query = "SELECT data FROM appdata WHERE var='$var'"; 
    $res1=mysql_query($query); 
    if (mysql_numrows($res1)>0) $query = "UPDATE appdata SET data='$data' WHERE var='$var'"; 
    else $query = "INSERT INTO appdata SET var='$var',data='$data'"; 
    return mysql_query($query); 
} 
相關問題