Facebook のような通知をダッシュボードに受け取る理想的なメカニズムは何でしょうか?. 5秒ごとにphpページへのAjax呼び出しを行い、通知を取得するのが最善の方法だと考えています。
同様の変更を行うためのより良い方法はありますか?
すべてのモバイル ブラウザーでも動作するはずです。
私は次の方法でそれをやっています、
$.post
ページを更新せずにデータを取得するために jquery で使用します。
$.post("page.php",{"act":1},function(data){
$("#id").html(data);
});
in page.php write your query
編集1
いくつかのオンラインノートとリアルタイムでの動作を参照した後、このような関数を作成しました。
var TimeStamp = null;
function waitForMsg() {
$.ajax({
type: "GET",
url: "getData.php?timestamp=" + TimeStamp,
async: true,
cache: false,
timeout: 50000, /* Timeout in ms */
// data: "TimeStamp=" + TimeStamp,
success: function( data ) {
var json = eval('(' + data + ')');
if ( json['msg'] != "" ) {
alert( json['msg'] );
}
TimeStamp = json['timestamp'];
setTimeout(
'waitForMsg()', /* Request next message */
1000 /* ..after 1 seconds */
);
},
error: function( XMLHttpRequest, textStatus, errorThrown ) {
alert("error:" + textStatus + "(" + errorThrown + ")");
setTimeout(
'waitForMsg()', /* Try again after.. */
"15000"); /* milliseconds (15seconds) */
},
});
}
;
// calling after dom is ready
$(document).ready(function() {
waitForMsg();
});
PHPファイルは、
<?php
$filename = dirname(__FILE__).'/data.txt';
$lastmodif = isset( $_GET['timestamp'] ) ? $_GET['timestamp'] : 0;
$currentmodif = filemtime( $filename );
while ( $currentmodif <= $lastmodif ) {
usleep( 10000 );
clearstatcache();
$currentmodif = filemtime($filename);
}
$response = array();
$response['msg'] = file_get_contents( $filename );
$response['timestamp'] = $currentmodif;
echo json_encode($response);
編集2
すべて正常に動作しますが、data.txt ファイルに変更がない場合、50 秒でこのようなエラー メッセージが表示されます。
エラー:タイムアウト(タイムアウト)
どうすればこれを防ぐことができますか?
REF : Javascript 変数のスコープ