ホームページ >バックエンド開発 >PHPチュートリアル >PHPサーバープッシュに関連する問題

PHPサーバープッシュに関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:47:37960ブラウズ

PHPサーバープッシュの問題。
現在、チャット機能を構築しようと考えています。ネットで調べたところ、プッシュ技術を使用していることがわかりました。
でも、分かりません。 Ajax ポーリングの使用は非常に非効率的です。 。 。

-----解決策---------

話し合ってください
ええと。 。 。私はいつも、ajax のロングポーリングはサーバーに多大な負荷をかけるだろうと感じています。
ユーザーが多すぎる場合。 。

------解決策------------------
人数が少ない場合、ajax ラウンドロビンは明らかにリソースの無駄であり、新しいチャット情報はありませんが、そこをチェックし続けます。
人が多い場合、comet はより長い接続を確立しますが、これは主にサーバーの最適化によるものと考えられます。



これは簡単な例です...原理についてだけ話します...
フロントエンドは通常の ajax で、バックエンドは無限ループです

HTML コード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<div id="テスト"></div>
<スクリプトタイプ="text/javascript">
関数テスト(){
    var aj;
    try{aj=new ActiveXObject("Msxml2.XMLHTTP");}
    キャッチ(e){
        try{aj=new ActiveXObject("Microsoft.XMLHTTP");}
        catch(E){aj=false;}
    }
    var time = Math.round(new Date().getTime() / 1000);
    if(!aj&&typeof XMLHttpRequest!=未定義)aj=new XMLHttpRequest();
    aj.open("GET","b.php?time="+time,true);
    aj.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
    aj.onreadystatechange=function(){
        if(aj.readyState==4&&aj.status==200){
            document.getElementById("test").innerHTML += aj.responseText;
            test(); // 結果を受信した後、接続を再確立します。
        }
    }
    aj.send(null);
}
テスト();
</スクリプト>
</ボディ>
</html> <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。