1週間のグーグルリングと検索の後。私は、data.textという名前のフラット・テキスト・ファイルではなく、データベース・テーブルからの長いポーリングに関するチュートリアルを1つ見つけることも難しいです。現在、私は手動でdata.textに何かを書き、すぐにブラウザに表示されます。データベースデータによるロングポーリング?
これは質問です。データベースを使用したロングポーリング? StackOverflowでも正しく応答されません。 (私はここが、無駄に多くのことを発見しました。)。この例は、ここにも filemtime alternative for MySQL
どのように私はそれがデータベースからデータをフェッチするために有効にするためにgetdata.phpを変更することができますか?私はここでの例を列挙しています
id fro to mesg time status last_modified
次のように
$sql=mysqli_query($database,"SELECT * FROM messages where time>=$curr_date ORDER by time DESC");
while($row=mysqli_fetch_array($sql)){
$messages=$row['messages'];
$id=$row['id'];
echo $messages;
}
メッセージテーブルがあります。 この例では、3つのファイルが使用されています。
- index.htmlを
- getdat.php
- data.text
(mysqlの)データベースからデータを取得するための第四のファイルを作成する必要がありますか?そうでない場合、データベースからの動的データを使用するためにgetdata.phpまたはdata.textにどのような変更が必要ですか?
は、ここに私のJavascript
<script type="text/javascript" charset="utf-8">
var timestamp = null;
function waitformsg() {
$.ajax({
type:"Post",
url:"getdata.php?timestamp="+timestamp,
async:true,
cache:false,
success:function(data) {
var json = eval('(' + data + ')');
if(json['msg'] != "") {
$("#messages").append(json['msg']);
}
timestamp = json["timestamp"];
setTimeout("waitformsg()", 1000);
},
error:function(XMLhttprequest, textstatus, errorthrown) {
alert("error:" + textstatus + "(" + errorthrown + ")");
setTimeout("waitformsg()", 15000);
}
});
}
$(document).ready(function() {
waitformsg();
});
</script>
は、ここで私は最近、非常に類似した何かを行っているgetdata.phpファイル
<?php
include("../model/includes/classes.php");
$filename='data.php';
$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);
?>
ようこそスタックオーバーフロー。あなたの質問を明確にすると、答えを得るのに役立ちます。あなたのサーバーをポーリングするためにajaxを使用するはずのWebページ(Javascriptでクライアントアプリケーションとも呼ばれる)を作成しているようです。あなたのテーブルにすでに格納されているすべてのメッセージを取得するgetdata.phpへの最初のajaxリクエストと、最新のリクエスト以降に出現した新しいメッセージを取得するための後続リクエストが必要なようです。あれは正しいですか?また、 'messages'テーブルの定義を表示してください。 –
@OllieJonesあなたのレスポンスをありがとうございます。あなたは私にこの質問を解決するための最後の希望であるようです。長いポーリングテクニックを使用してチャットアプリケーションをビルドしています.Messaesテーブルは、時間の列。 –