8

1週間のグーグル検索と検索の後、data.textという名前のフラットテキストファイルからではなく、データベーステーブルからのロングポーリングに関するチュートリアルを1つも見つけるのが困難です。現在、data.text に何かを手動で書き込むと、ブラウザーに即座に表示されます。

これが問題です: データベースを使用したロングポーリング? StackOverflow でも正しく答えられません。(私はここでたくさん見つけましたが、無駄でした。)これの例もここ にあります MySQLのfilemtimeの代替

データベースからデータを取得できるように getdata.php を変更するにはどうすればよいですか?

 $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;
  }

メッセージ表は次のとおりです

    id     fro   to  mesg      time  status  last_modified  

私はここに例を挙げています。この例では、3 つのファイルが使用されています。

  1. index.html
  2. getdat.php
  3. データ.テキスト

データベース(mysql)からデータを取得するために4番目のファイルを作成する必要はありますか? そうでない場合、データベースからの動的データを使用するには、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);
?>
4

1 に答える 1