2013-06-01 24 views
0

許多桌面應用程序(例如使用Delphi構建的應用程序)都使用「數據庫感知組件」,例如顯示數據庫內容(通常是查詢結果)的網格,並在數據庫內容自動更新顯示更改。數據感知PHP組件?

這樣的事情是否存在於PHP中(可能在HTML表格中顯示查詢的結果並更新)?

如果不是,我們將如何去創建它?

(注:This seemingly similar question沒有幫助我)

+1

查找到Symfony的形式:HTTP://的symfony .COM/DOC/2.3 /書/表格。 html –

+0

它應該是多麼先進?你認爲簡單的東西或數據庫腳本也是可能的嗎? – Ochi

回答

3

這不是技術上是可行的更新HTML網頁一旦與由於HTTP協議的靜態性質純PHP渲染,因此任何解決方案必須包括JavaScript和AJAX調用。

使用AJAX重新渲染表,每5分鐘

它不會是很難效仿,雖然,只是做一個PHP網頁,其中獲得一個數據庫的結果,並把它們放在一個表仿效,然後使用jQuery的​​函數來獲取該表並將其呈現在您選擇的DIV之間,間隔爲5秒或其他。

喜歡的東西:

function updateTable(){ 
    $('#tableDiv').load(url); 
} 
var url = 'renderTable.php'; 
setInterval(updateTable,5000); 

您可以用ID tableDivDIV把這個在任何PHP(或HTML)頁面,並在每5秒的div無需刷新,它將使renderTable.php輸出。

其實監控數據庫

這是可能的,你必須建立在一個cron一個PHP文件爲每5秒(或AJAX調用每隔5秒)運行類似SELECT MD5(CONCAT(rows,'_',modified)) AS checksum FROM information_schema.innodb_table_stats WHERE table_schema='db' AND table_name='some_table';(假設innoDB),然後將它與以前的校驗和進行比較。

如果校驗和相同,則可以將'​​false'傳遞給您的已修改的AJAX調用,該調用會告訴它不要在表上渲染任何東西。如果它們不是,您可以將它傳遞給新表的HTML來呈現。

2

它可以做,但不同的技術

的搭配,如果我想在我會考慮觸發器和插座在數據庫中進行實時變化監測 - 觸發數據庫應該調用(在插入或更新)功能,將活動添加到隊列 - 這裏是對PostgreSQL例如函數(PLSH是自定義的處理器)

CREATE FUNCTION propagate_event(tablename) RETURNS text AS ' 
    #!/bin/sh 
    # execute script that will add event to message queue 
    /var/scripts/change_in_table.sh "$1" 
' LANGUAGE plsh; 

客戶端連接到插座,接收實時事件

+0

您還必須使用類似Flash插座對象的東西,因爲[Javascript不支持本地套接字](http://haxe.org/doc/js/using_sockets_with_javascript)。 –

+0

他可以使用socket.io :)並忘記它 – Ochi

+0

是的,socket.io通常使用Flash套接字對象(儘管我認爲它可以不工作)。 upvoted因爲這實際上更準確地回答了我的問題。 –