如何在数据库,websockets或长轮询实现中记录更改时不断更新数据表

ind*_*ago 5 jquery datatables long-polling websocket phpwebsocket

我在webapp上使用datatables作为我的网格.问题是,用户必须始终刷新页面以从数据库中获取当前数据,有没有办法可以自动完成?因为有几个应用程序写入同一个表,而webapp仅用于监控,但如果用户必须刷新页面以获取当前数据,它就会失败.这是我的初始化代码:

  $('.{{datatable['class']}}').dataTable( {
                "sDom": 'T<"clear">lfrtip',
                "oTableTools": {
                    "sSwfPath": "includes/swf/copy_csv_xls_pdf.swf",                
                    "aButtons": [
                         { 
                             "sExtends":"copy",
                             "mColumns":[{{datatable['flds']}}]
                         },
                         {   
                             "sExtends":"csv",
                             "mColumns":[{{datatable['flds']}}]
                         },

                         {
                             "sExtends":"xls",
                             "mColumns":[{{datatable['flds']}}]
                         },                         
                         {
                            "sExtends": "pdf",
                            "mColumns":[{{datatable['flds']}}],
                            "sPdfOrientation": "landscape",
                            "sPdfMessage": "{{datatable['title']}}"
                         }
                    ]
                    },        
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": "{{datatable['source']}}",
                "aoColumns": [          
                        {% for column in 0..datatable['columns']-2 %}
                        null,
                        {% endfor %}
                        null
                ]

        });
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,每当数据源发生任何事情(UPDATE/INSERT/DELETE)时,列表可以自行更新?我已经实现了Danny建议的循环,

var int=self.setInterval(function(){oTable.fnDraw();},1000);
Run Code Online (Sandbox Code Playgroud)

但问题是列表总是一个有趣的状态,看到附着的图像在此输入图像描述

Dan*_*nny 2

您可以通过间隔计时器在循环中发生一个 ajax 请求,该计时器检查自页面上次接收到任何内容以来是否有新数据。您需要弄清楚可以使用什么来确定记录数量或保存上次更新/添加/删除的日期时间的专用记录,以及如果日期时间较新,则上次获取数据时再次更新等. 在该页面上,您可以在 javascript var 中记录/更新上次数据更新的日期时间,以便在以后的所有检查中使用。