2

私は自分のウェブサイトにチャットルームを作ろうとしています.phpとmysqlを使ってメッセージとすべての情報を保存しています. 誰かがデータベースを更新するたびにページを自動的に更新するにはどうすればよいですか? 例:

自分のサイトにアクセスしている場合、メッセージは画面に表示されますが、ページを更新すると最近のメッセージしか表示されません。リアルタイムにする方法はありますか?

また、javascript/ajax/jquery などもあまり知りません。どんな助けでも大歓迎です!

私のサイトのトラフィック量は少なくなります。1回で10~15人くらいだったかな。

4

7 に答える 7

3

最善の策は、1 秒ごとに AJAX リクエストを作成し、新しいメッセージがあるかどうかを確認することです。

于 2012-08-17T17:57:23.200 に答える
2

おそらく、毎回ページをリロードする必要はありません。私のお勧めは、これを行う方法はたくさんありますが、頻繁に ajax 呼び出しを行い、データベースから新しい情報をチェック/プルすることです。

私は AJAX を調査し、チュートリアルを行います。

于 2012-08-17T17:58:08.777 に答える
2

これは、関数を呼び出して div を更新することにより、ajax を介して実現されます。メッセージを送信するたびにページを更新するように人々に強制することはお勧めできません。別のオプションは、HTML5 Web ワーカーを使用することです

http://msdn.microsoft.com/en-us/hh549259.aspx

于 2012-08-17T17:58:49.120 に答える
2

これをうまく機能させるには AJAX を学ぶ必要がありますが、おそらく jQuery が最も簡単な方法です。更新する DIV に ID があると想定できる場合はPonyRides、次のようにします。

$("#PonyRides").ajax({url: "/chat.php?getupdates=true"});

これにより、chat.php のコンテンツが取得され、#PonyRidesDIV に貼り付けられます。これは、chat.php がデータベースのコンテンツを取得し、HTML にフォーマットすることを前提としています。

残りの課題は、データベースが更新されるたびに更新することですが、最も簡単な方法は、更新が行われたかどうかに関係なく、チャット全体をリロードすることです.

これはパフォーマンスに影響しますが、チャッターが 100 未満であれば、おそらく問題ありません。それ以上の場合は、非アクティブを感知してチェック期間を短縮するか、チャット全体ではなく更新のみを送信することをお勧めします. ただし、これらはより複雑なトピックであり、これらの基本概念を理解したら、必要に応じて組み込むことができます。

これを行うには、次のajax()ように呼び出しを間隔でラップするだけです。

setInterval(function(){ //the following code runs repeatedly
    $("#PonyRides").ajax({url: "/chat.php?getupdates=true"});  //update our chat div
},5000); //repeat every five seconds

もう 1 つのひどい方法は、iFrame にチャットをロードし、メタ リフレッシュテクニックを使用して定期的にリロードするように設定することです。これは恐ろしいことであり、何らかの理由で信じられないほど古いブラウザをサポートしようとしている場合にのみ推奨されます。

于 2012-08-17T18:00:44.557 に答える
1
You can use AJAX request to update the values   

 <script type='text/javascript'>

    // function for making an object for making AJAX request

    function getXMLHTTPRequest() {
    try {
    req = new XMLHttpRequest();
    } catch(err1) {
    try {
    req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (err2) {
    try {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (err3) {
    req = false;
    }
    }
    }
    return req;
    }

    var http899 = getXMLHTTPRequest();
    function searchFabIndia() {

    var myurl = "http://my2nddomain.com/yebhi.php";
    myRand = parseInt(Math.random()*999999999999999);
    var modurl = myurl+"?rand="+myRand;
    http899.open("GET", modurl, true);
    http899.onreadystatechange = useHttpResponse899;
    http899.send(null);
    }

    function useHttpResponse899() {
    if (http899.readyState == 4) {
    if(http899.status == 200) {
     // do all processings with the obtained values / response here

   // after doing the stuff, call fn again after 30 s say

   setTimeout("searchFabIndia()", 30000);
    }
    }
    }

    </script>
<body onload='searchFabIndia();'>
于 2012-08-17T18:01:34.077 に答える
0

データベースを更新するサーバー上のファイルにAJAXリクエストを行うことをお勧めします。データベースへの更新が成功した場合は、更新されたメッセージを返します。クライアント側に戻って応答を待ち、応答があればコンテンツの最後にメッセージを追加します。この方法では、毎回すべてのメッセージをロードし (コストがかかります)、新しいメッセージのみをロードします。

于 2012-08-17T18:00:05.520 に答える
-1

php の SignalR(.net) に似たものが必要です。イベントが発生したときにコードを追加できます。それがあなたが探しているものだと思います。

于 2012-08-17T18:01:19.160 に答える